PLAN
Srh 'HT rM^r LlhC iOT LHHF tH h l-'i ■» 1 1
Making Sense of Fahrenheit
Last December, the wraps
came off a plan by Microsoft
and SGI to integrate their
graphics strategies into one
unified vision, code-named
"Fahrenheit." Unfortunately, many of us
feel as if not all of the wrapping paper
was removed from this early Christmas
present: many of Fahrenheit's implica-
tions remain unclear.
Here is some of what's known thus
far. Three new APIs will be developed by
Microsoft and SGI, with input from
Intel, Hewlett-Packard, and some other
IHVs and ISVs along the way. These
three APIs are:
1. A Low-Level API for accessing low-
level hardware. This will supercede the
current Direct3D and OpenGL APIs, yet
will retain elements of both (with a dash
of DirectDraw thrown in). This API will
definitely be COM-based on the
Windows platform, and Microsoft has
said it will be an evolutionary step for-
ward for current Direct3D users, just as
Direct3 D has evolved in various ways
over the years. In fact, it might be help-
ful just to think of it as a future version
Direct3D, since I bet that's what it will
be under Windows. Approximate arrival
date: 2000.
2. A Scene Graph API, consisting of a
framework that sits on top of the low-
level API and manages the geometry
and data making up a scene. By adding
a layer of abstraction away from the
hardware, this API lets developers con-
centrate on application content rather
than coding to the underlying system.
According to SGI, the Scene Graph API
will incorporate technologies from the
company's Performer, Open Inventor,
and Cosmo tools, as well as recent
OpenGL advancements. Approximate
arrival date: 1999.
3. The Large Model Visualization API.
LMV is based on Hewlett-Packard's
DirectModel and SGI's OpenGL
Optimizer technologies. It's primarily
for industrial-strength prototyping
applications involving millions of poly-
gons and very complex data sets —
think automobile engineering analysis.
Fahrenheit documentation states that
"developers can feel confident that there
will be a high degree of functional con-
sistency between their current OpenGL
applications and the Fahrenheit Low-
Level API." Yet Microsoft recommends
going forward with DirectDraw and
Direct3D from here on out, as the
migration path from future OpenGL
iterations (that is, after version 1.2) to
Fahrenheit under Windows won't be as
easy. This has called into question the
graphics strategies of game developers
for the coming years.
The result of this confusion? A lot of
conjecture by game developers as to
what the Fahrenheit announcement
means and what their best course of
action is. Some developers view it as SGI
capitulating to Microsoft, and lament
the passing of one of the last bastions of
excellent technology not fully co-opted
by the powers-that-be in Redmond.
However, let's all take a deep breath and
resist a knee-jerk reaction. Rather than
fanning the flames on the Direct3D vs.
OpenGL spat, let's put our energy into
constructive dialog with these compa-
nies as they try to create a solid founda-
tion for a unified graphics standard.
You can expect thorough coverage
and analysis of Fahrenheit in Game
Developer in the coming months. Mean-
while, write us at gdmag@mn.com with
your questions and reactions. We'll pub-
lish your letters in an upcoming issue.
Hook on Hiatus, Lander Joins Us
This month, we're joined by a new
Graphic Content columnist, Jeff Lander.
Jeff is taking over for Brian Hook, who
imparted much of his considerable
knowledge about graphics program-
ming to us in 1997. Unfortunately for
us, Brian got involved in a little side
project called id Software along the way,
and his column-writing time began to
dwindle. We'll miss him, but he's going
to stick around as a member of our advi-
sory board. Fortunately, Jeff Lander is
also a phenomenal developer as well as
an excellent writer, and we're fortunate
to land him. Welcome, Jeff. ■
EVELOPER
editor in chief Alex Dunne
adunne@compuserve.com
managing editor Tor Berg
tdberg@sirius.com
editorial assistant Wesley Hall
whall@rnfi.com
EDiTOR-AT-LARGE Chris Hecker
checker@bix.com
contributing editors Jeff Lander
jeffl@darwin3d.com
Josh White
josh@vectorg.com
advisory board Hal Barwood
Noah Falstein
Brian Hook
Susan Lee-Merrow
Mark Miller
Josh White
cover image Cyan Inc.
vice president KoAnn Vikoren
publisher Cynthia A. Blair
(415) 905-2210
cblair@mfi.com
MARKETING MANAGER
AD. PRODUCTION COORDINATOR
DIRECTOR OF PRODUCTION
VICE PRESIDENT/CIRCULATION
GROUP CIRCULATION MANAGER
CIRCULATION MANAGER
CIRCULATION ASSISTANT
NEWSSTAND MANAGER
REPRINTS
Susan McDonald
Dave Perrotti
Andrew A. Mickus
Jerry M. Okabe
Mike Poplardo
Stephanie Blake
Kausha Jackson-Craine
Eric Alekman
Stella Valdez
(916) 983-6971
in
Miller Freeman
A United News & Media publication
CEO-MILLER FREEMAN GLOBAL
CHAIRMAN-MILLER FREEMAN INC.
PRESIDENT/COO
SENIOR VICE PRESIDENT/CFO
SENIOR VICE PRESIDENTS
VICE PRESIDENT/PRODUCTION
VICE PRESIDENT/CIRCULATION
SENIOR VICE PRESIDENT/
SYSTEMS AND SOFTWARE
DIVISION
Tony Tillin
Marshall W. Freeman
Donald A. Pazour
Warren "Andy" Ambrose
H. Ted Bahr,
Darrell Denny,
David Nussbaum,
Galen A. Poss,
Wini D. Ragus,
Regina Starr Ridley
Andrew A. Mickus
Jerry M. Okabe
Regina Starr Ridley
GAME DEVELOPER MARCH 1 9 9 J
www.gdmag.com
SAYS
YO U
Third-Party Libraries
■ n response to Brian Hook's column
I in the January 1998 issue of Game
Developer ("Graphic Content/' p. 11), in
which he discusses perceived problems
with using prepackaged software
libraries — his assertions reflect a com-
mon attitude among some of the
younger Internet crowd who claim to
"know" all about software libraries that
they've never tried.
Brian's conclusions are based upon
false assumptions — that external
libraries are buggy, require
workarounds that take
longer to
imple-
ment
than writ-
ing the code from
scratch, are not
optimized, are
inflexible, are poorly
supported, and are inca-
pable of adding functionality except at
the whim of the original author. He
presents these "facts" with no evi-
dence, in the spirit of "everybody
knows it to be true."
I am the senior programmer at Ted
Gruber Software, and I would like to
address some of the myths surrounding
software libraries.
We have been developing the
Fastgraph libraries for more than 10
years. Our libraries are highly optimized
in hand-written assembly language.
They support most compilers and virtu-
ally all video cards. They are copiously
documented and are essentially bug-
free. The rare customer complaints we
receive are given priority treatment, and
if a bug is actually found, it is usually
fixed the same day.
Brian asserts that if the library author
isn't amenable to adding the particular
feature that you want, then you are "in
trouble." This is simply baffling.
Fastgraph is modular, like a set of build-
ing blocks. If you need a block that's
not in Fastgraph's block set, you simply
add another block. You don't need to
throw away everything you've built.
His claim that "The software compo-
nent that you purchased might look
great on paper, but when you drop it
into your program and then spend a
week looking for a bug that turns out to
be a part of your new magic software IC,
well, you tend to snap out of your dream
world pretty quickly" is simply offensive.
Not one of our customers has ever report-
ed experiencing anything like that. This
kind of polemic may sell to the masses,
but it is inaccurate and damaging.
Finally, let me tell you something
about writing
games. They^
need to
be writ-
ten
quickly
and
shipped the
same year. If
Got something to say? [-mail us at
gdmag@mfi.com. Or write tote
Developer, 600 Harrison Street, San
Francisco, CA 94107.
you spend 10 months
of that year re-inventing
the wheel, your competition
is going to beat you out the door,
id Software manages to stay abreast
of technology, but they've been
doing this for many years. If you're
a new company with new program-
mers writing a new game, you need
to hit the ground running. The tiny
amount you spend on software
libraries will shave months or years off
of your development cycle.
Don't believe everything you hear
on the Internet. When you are making
a decision about whether to invest in
software libraries, base that decision on
facts, not newsgroup rhetoric.
Diana Gruber
Senior Programmer
Ted Gruber Software Inc.
BRIAN HOOK REPLIES: I am baffled by
the vehemence with which Diana Gruber
objects to what are common sense asser-
tions on my part. She misrepresents my com-
ments appallingly. I did not state that I am
familiar with software that I have never tried,
nor did I claim that all external libraries
exhibit all the negative attributes listed. My
opinions are based on my experience work-
ing with many libraries and APIs over eight
years. I have encountered bugs and perfor-
mance issues with many different third -party
libraries, including the run-time libraries that
come with many compilers and DOS exten-
ders, public-domain "freeware" libraries,
window system abstraction libraries, 2D and
3D graphics libraries, and operating system
APIs. Bugs are a part of life when you pro-
gram for a living. Intel processors have bugs.
BlOSes have bugs. Peripheral hardware has
bugs. To believe that only a handful of third-
party libraries and APIs possess bugs is
naive, and the implication that my comments
are the ramblings of an inexperienced kid is
offensive.
If she wishes to assert that Fastgraph is
bug- free, extensible, well documented, well
supported, and fast — it sounds like a great
product! I have no quarrel with that library —
I've never used it, nor have I claimed such.
Even so, she states that Fastgraph sup-
sports "most" compilers and "virtually all"
L video cards. Which means that there is
ia real chance that someone who uses
J Fastgraph could run into problems
'when attempting to find support for a
r new or heretofore unimportant (for the
end user) compiler or hardware device.
Stories such as this are not uncommon: a
company is using Compiler ABC and thus gets
library XYZ. However, 14 months into the pro-
ject, the company switches to Compiler J KL
because of unrelated technical issues, only to
find that XYZ does not support JKL. I've been
in this situation — it occurs often. It hap-
pened at id when we wanted to release the
Doom source code. We found that there was a
dependency in the DOS version on a third-
party library, which meant that the Linux code
had to be released instead. While Fastgraph
may be modular and extensible, most of the
libraries that I have worked with are mono-
lithic and most decidedly not extensible.
I agree wholeheartedly that games need to
be written quickly — although shipped the
same year is pushing it quite a bit. I haven't
seen a professional game implemented and
shipped in less than 12 months in quite some
time. I haven't dismissed the notion of third-
party libraries out of hand — I simply urge
caution when considering committing to such
packages. For example, id Software is a big
proponent of Op enGL — a third-party library
— and we use it extensively. As a result,
we've endured poor hardware and worse dri-
vers. Still, we feel that OpenGL's advantages
outweighed its disadvantages. So it's not as
if we're some kind of API Luddites who wor-
ship at the altar of NIH — we simply take into
account the trade-offs that exist when select-
ing each of our development tools.
Finally, I don't understand her obsession
with newsgroups or the Internet, but if
you're thinking about buying into someone
else's technology, you would be irresponsi-
ble not to solicit the opinions of others who
have used that technology — whether
those opinions come in the form of e-mail,
print reviews, Websites, Usenet posts, or
Pony Express is irrelevant. Such commit-
ments should be made with as much data
as possible. I'm curious where "facts"
should be drawn from — press releases and
marketing collateral?
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
I N D U ST RY AliaslWavef rant's Maya
W A T C
btf Alex Duhnc
HERE COMES THE GOD SQUAD. Mike Wilson
has signed on a strong roster of game devel-
opers to the Gathering of Developers.
Developers include Apogee/3D Realms,
Epic Megagames, PopTop Software, Ritual
Entertainment, and Terminal Reality. The
squabble between GT Interactive and
Apogee/3DR over who will publish the
forthcoming Max Payne title may not be the
only speed bump that GOD encounters as it
continues to lure developers with sky-high
(about 40-50%) returns on sales, but that
should be expected during a transition peri-
od like this. The high rate of return GOD
promises its developers could cause some
bidding wars by publishers over upcoming
titles. Big winner? Developers. Incidentally,
Wilson says that GOD will ship four games
this year, and he's shooting to get seven out
the door in '99.
THE LONELY GUY? The Sega layoffs
announced on January 9 may have only
trimmed 30% of the company'sworkforce as
announced, but the
layoff decimated
the Sega of
America division.
Just one channel
salesperson
remains in that divi-
sion. With Saturn sales in the can, and its
next-generation system (Dural) a long way
off, the company was left with few options
for its sales force. I doubt that last guy is
working on straight commission.
RIDING THE WAVES. AMD is weathering
some pretty severe ups and downs right
now. Up: it shipped close to 1.5 million K6
processors during the fourth quarter (thanks
to its major deal with Compaq), nearly
achieving the company's goal. Down: It has
problems with declining liquidity and ana-
lysts are contemplating downgrading its
stock. Up: AMD-3D technology is gaining
buy-in from game developers like
Dreamworks and Digital Anvil, and tool
ALIAS I WAVE FRO NT is finally releasing Maya, its innovative computer graphics
and animation application. It purports to be the next generation in 3D character
animation and visual effects technology.
Alias|Wavefront developed many
architectural innovations to maxi-
mize system performance. Maya com-
bines object-oriented C++ design with
a native OpenGL graphics implemen-
tation to provide high levels of
throughput for computational and
interactive tasks.Three architectural
components give Maya power as an
animation system. The first is the
Dependency Graph, Maya's node-
based architecture. The second is
MEL, Maya's unique scripting lan-
guage, which gives users flexibility in
extending Maya. In addition, Maya's
C++ API allows users to add custom
plug-ins to tailor the program to spe-
cific production requirements. The application also incorporates a comprehensive
set of features spanning modeling, animation, and rendering. Maya definitely
focuses on ease-of-use; it allows artists to use a wide variety of character building
tools and techniques to create digital puppets with embedded behaviors and high
level controls. Once built, these digital puppets may be posed and animated by
other artists without requiring them to understand all of the underlying technol-
ogy-
Hardware requirements for Maya are: R4000 or higher processor, 24-bit graph-
ics, OpenGL native preferred, and at least 128MB RAM. It runs on IRIX 6.2 or
higher. Base price for Maya starts at $10,000; additional modules range from
$5,000 for Artisan, to 10,000 for each other module.
■ AliaslWavefront
Toronto, Canada
(416) 362-9181
www.aw.sgi.com/pages/ maya_transition_web/
Image created by C. Landreth using
AliaslWavefront's Maya.
PowerMoves I
CREDO INTERACTIVE Credo
Interactive unveiled Life Forms
PowerMoves I, a 3D animation library
that complements the company's Life
Forms character animation software.
Life Forms is a stand-alone tool for
creating, editing, and playing back
character animation. It features a built-
in walk generator, motion capture data
support, graphical editing tools and its
own animation libraries. PowerMoves I
adds over 600 keyframed single and
multi-figure 3D animation sequences
to Life Forms, including office moves,
sports activities, dancing, walking, and
running. The PowerMoves collection of
basic sequences serves as a starting
point for animation projects, as these
keyframed animation segments can be
modified to get the specific look and
GAME DEVELOPER MARCH 1 9 9 J
http://www.gdmag.com
M E
feel an animator requires.
Life Forms and PowerMoves work
with Infini-D, Extreme 3D ;
Electriclmage, 3D Studio R4, Pixel
Putty, and any program that supports
BioVision or Acclaim motion capture
file formats, or VRML 1 and 2 formats.
Support for LightWave 3D and 3D
Studio MAX is currently in develop-
ment. Power Moves I sells for $249.
■ Credo Interactive
Burnaby, British Columbia, Canada
(604) 291-6717
www.credo-interactive.com
DeBabelizer 3 for Mac OS
EQUILIBRIUM just released the latest
Macintosh version of DeBabelizer 3.
Already a standard graphics proces-
sor in desktop publishing, multimedia,
and the Web, this new upgrade of
DeBabelizer took "Best of Show" at
January's Macworld Expo in San
Francisco. DeBabelizer automatically
and efficiently optimizes, translates,
and processes graphics so that you can
deliver content with the highest level
of image quality across a variety of
platforms. DeBabelizer 3 features a
new, more intuitive interface that
streamlines batch automation func-
tions, allows an unlimited number of
open image files, and grants more
extensive drag-and-drop capabilities.
The product also provides improved
The new user interface for DeBabelizer 3.
Web support. There are more powerful
color reduction capabilities, including
new built-in niters, enhanced plug-in
filter support, and the ability to create
SuperPalettes from any base palette.
DeBabelizer 3 also features full CMYK
support, more powerful scripting capa-
bilities, and additional file formats.
DeBabelizer 3 runs on the Macintosh
OS, and has a suggested retail price of
$595.
■ Equilibrium
Sausalito, California
(415) 332-4343
www.equilibrium.com
CodeWarrior in AND-3D
METROWERKS and AMD have
entered into a relationship, whereby
CodeWarrior Professional will now
support the AMD-3D technology.
CodeWarrior Professional offers
developers a complete set of tools for
writing programs optimized for the
AMD-K6 processor and AMD-3D tech-
nology. CodeWarrior gives you inline
assembly support for AMD's 3D instruc-
tion set. It will also allow you to opti-
mize your code for the AMD-K6 proces-
sor. You can optimize for AMD-3D
technology on a per-function basis, let-
ting you exploit the speed of the new
3D instruction set. Finally, CodeWarrior
utilizes vectorization compiler tech-
niques to take advantage of the parallel
instruction capabilities of the
AMD-3D technology.
CodeWarrior Professional for
AMD-3D technology supports
C, C++, Java, and Pascal. It
requires a 486 processor or
higher, at least 16MB of RAM,
Windows 95/NT 4.0, CD-ROM
for installation, and 80MB of
hard disk space. It sells for
■ $449.
I ■ Metrowerks
Austin, Texas
(512) 873-4700
www.metrowerks.com
makers like Metrowerks. Down: Company
executives have stated that Q1 may not be
rosy financially, since it's switching over to
.25 micron technology from its current .35
micron manufacturing process. This should
be a telling year for the company.
NEW TITLES ON TOP. Those tag-team cham-
pions of the PC Data charts. Riven and Myst,
were finally dethroned for the week after
Christmas (Dec. 28 - Jan. 3) by Quake 2 and
Microsoft Flight Simulator. The first or sec-
ond spot on the monthly top seller list has
been occupied by either Riven or Myst
going all the way back to last June — quite
an impressive streak.
CUC NOW CENDANT. As a result of a merger
between CUC International and HFS Inc.,
CUC Software is now Cendant Software.
The merger widens the scope of this
already diverse company. Formerly,
Blizzard, Sierra On-Line, Davidson &
Associates, and Knowledge Adventure
shared the same corporate roof with Days
Inn, Howard Johnson, Ramada, and Avis.
Now Century 21, Coldwell Banker, and ERA
become corporate sisters too. No word as to
whether low fixed-rate mortgages are now
part of employee incentive packages at
Cendant's game studios. . .
CHRIS' CAST NAMED. Cast members for
Chris Roberts' upcoming Wing Commander
flick have been named
— not that you'll rec-
ognize them by name,
necessarily. The
stars include Freddie
Prinze Jr. (I Know
What You Did Last
Summer), Saffron Burrows (Circle of
Friends), Matthew Lillard (Scream), and
Elise Neal (Scream 2). The film is now in
production in Luxembourg and Germany.
IT WAS A GOOD YEAR. Bloomberg News
has identified the game development indus-
try as a "bright spot for investors in 1998."
The respected financial news organization
expects PC game sales to climb 30% this
year to over $400 million. In addition, the
market research firm, NPD Group, predicts
that when all is said and done, 1997 will
have seen an increase in the video-game
business of up to 45 percent over '96.
http://www.gdmag.com
MARCH 199*
GAME DEVELOPER
Bock j
GRAPHIC CONTENT
_
btf Jeff Lander
Better 3D:
The Writing Is on the Wall
Have you ever come up with the solution to a problem at an unfortunate
time? It can strike so suddenly. You know that if you don't write it
down immediately, the solution may be lost forever. There are times
when I wake from a sound sleep with the answer to a problem that's
been bugging me for days.
Occasionally, I have to jump up and
crank on the computer to try it out
right away. Most times though, I just
roll over and go back to sleep.
Epiphany or not, a guy needs his rest.
This phenomenon didn't begin with
the computer age. In fact, long ago, the
mathematician Sir William Hamilton
found himself in the exact same situa-
tion. In the early 1830s, he was trying
to extend complex number theory
from 2D to 3D. Hamilton believed that
a complex volume could be denned by
one real and two imaginary axes. He
worked on this problem for over a
decade with no luck, and I might add,
without the aid of a computer. Then,
on October 16, 1843, while walking
past the Broome Bridge to a meeting at
the Royal Irish Academy in Dublin, the
answer came to him. Hamilton realized
that he needed three imaginary units
with some special properties to
describe the volume. He was so excited
and so fearful of losing the answer for
all time, that he carved the formula
into the side of the bridge with a knife.
It's a good thing he didn't roll over and
go to sleep.
He called his solution a "quater-
nion," and it looks like this:
q = a + bi + cj + dk
Although I've never come up with
something so good that I needed to
carve it into the side of a bridge, I do
have some ideas for animating charac-
ters that I've wanted to implement for
years. Until now, I've had problems
making these ideas come to life. Some
of my problems are solved by better
hardware and some are solved by just
plain hard work. Today's problem has
been solved by a combination of both.
But what, you ask, do quaternions and
my problems with animating charac-
ters have to do with game program-
ming? Read on.
Now that we have the ability to cre-
ate complex real-time characters, the
challenge lies in bringing these charac-
ters to life. So how do I do that success-
fully? It really comes down to a prob-
lem of data storage and playback. What
I need to store is the position and ori-
entation of each "bone" in the charac-
ter that I'm animating.
Last month, Nick Bobick wrote about
using quaternions for camera anima-
tion and physical simulation ("Rotat-
ing Objects Using Quaternions," Feb-
ruary 1998). We are going to apply the
same concepts to character animation
in OpenGL.
Character Animation
Animation data is normally stored in
keyframes. These keyframes are
recorded periodically. For instance,
motion capture data is often recorded at
30 frames per second (fps), the standard
NTSC video playback rate. Obviously,
such a high frame rate generates a lot of
data. In order to save precious RAM,
many game applications store animation
data at a much lower rate, say 10 fps.
However, modern 3D action games
try to run quite a bit faster than 10 fps.
A game running at 30 fps will show
three times as many frames as a 10 fps
Who is this Jeff Lander dude, anyway? Jeff's a maniacal research nerd who loves the
challenge of computer graphics programming when not mountain hiking by the
beach. He is always willing to learn more, and in fact, thrives on it. If you have any-
thing you want to learn more about or something you would like to discuss, contact
Jeff a t jeffl@darwin3d. com .
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
animation. This leaves you with a couple of options. The first
option is to repeat or hold the same keyframe over three game
cycles until the next animation frame arrives. This approach,
however, can make your animation look a bit jerky.
The second option — and I consider this to be the better
solution — is to create frames in real time that are in-
between the existing keyframes. You generate these in-
betweens by interpolating where the bone is at a given
time between your keyframed data. Coming up with a
method by which to calculate this in-between position is
where I start hitting the wall (or bridge).
Euler Angles
The most common method of representing the current
orientation of an object is through the use of Euler
angles. This method represents the absolute orientation of
an object as a series of three rotations about three mutually
orthogonal axes, normally labeled x, y, and z. These Euler
angles describe the three angular degrees of freedom. It's
important to remember that by applying these rotations in
different orders, you'll get different final orientations. So
it's best to stay consistent.
If you saw the movie Apollo 13, you were probably amused
by those guys whipping out their slide rules and complain-
ing about something called "gimbal lock." Well, as strange
as it sounds, gimbal lock can be a real problem. It's named
after a situation that occurs in a mechanical gyroscope con-
sisting of three concentric rings. Under certain rotations, the
support for the gyroscope, called a gimbal, could lose of a
degree of freedom.
This problem has a parallel in computer graphics. Bobick
explained the situation in his February article, but it may help
us to visualize it. Because Euler angles do not act indepen-
dently of each other, it's possible to lose a degree of freedom.
Therefore, a change to one of the angles affects the entire sys-
tem. Let's look at an example. If I take the object in Figure la
and rotate it 30 degrees about the x axis, I'll get the image in
Figure lb. I now rotate the object 90 degrees about the y axis,
resulting in Figure lc. As you can see, the current z axis is in
line with the x o axis. What we have now is gimbal lock. Any
further rotation about the z axis affects the same degree of
freedom as rotating about the x axis. I have completely lost
the ability to rotate around the third degree of freedom. In
many 3D modeling packages, it's possible to avoid this prob-
lem by creating a parent to this object and rotating the parent
to gain back the additional degree of freedom. However, in a
real-time 3D game, this isn't really possible.
The second problem with the use of Euler angles involves
generating an in-between. In order to animate my character
smoothly, I need to interpolate a new position out of the
existing keyframes in my animation data. The fact that the
Euler angles don't act independently of each other again
raises a problem. I could represent the orientation of an
object as (0,180,0) degrees about (x,y,z) respectively. This
same orientation could also be described as (180,0,180).
Now, what if I want to generate a position halfway between
(0,0,0) and both orientations? In the first case, I would get
(0,90,0) (Figure 2a), but in the second case I would get
(90,0,90) (Figure 2b). Clearly, these two orientations are not
http://www.gdmag.com
GRAPHIC CONTENT
equivalent. These two problems with
animating Euler angles lead me to look
for a better way to store orientations for
my animation.
Quaternions
i y using quaternions to represent the
* orientation of an object, I can avoid
the drawbacks of using Euler angles. A
quaternion, when used to represent the
orientation of a rigid body in space, is
defined by two parts: a vector that
describes the axis of rotation and a scalar
value. When two quaternions of unit
magnitude are multiplied together, they
generate a single quaternion of unit mag-
nitude — this is crucial to the use of
quaternions for representing rotations.
So, to use this system of animation, I
have to convert my orientations from
Euler angles to quaternions. For details on
how quaternions are multiplied together I
would suggest the Shoemake article that
is referenced at the end of this column.
Conversion from Euler Angles to
Quaternions
otations are defined as the follow-
ing quaternions using [(x,y,z),w]
notation, where (x,y,z) is a vector and w
is a scalar value.
Euler (x = y = 9, z = <|>)
Q x = [(sin(i|//2),0,0), cos(\|//2)]
Q y =[(0,sin(6/2),0), cos(9/2)]
Q z =[(0,0, sin^/2)), cos^/2)]
LISTING 1 . Conversion from Euler angles to quaternions.
Illllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
II Function: EulerToQuaternion
// Purpose: Convert a set of Euler angles to a quaternion
// Arguments: A rotation set of 3 angles, a quaternion to set
// Discussion: This creates a Series of quaternions and multiplies them together
// in the X Y Z order.
Illllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
void EulerToQuaternion (tVector *rot, tQuaternion *quat)
{
/// Local Variables lllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
float rx,ry,rz,ti,tj,tk;
tQuaternion qx,qy,qz,qf;
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
II FIRST STEP, CONVERT ANGLES TO RADIANS
rx = (rot->x * M_PI) / (360 / 2);
ry = (rot->y * M_PI) / (360 / 2);
rz = (rot->z * M.PI) / (360 / 2);
// GET THE HALF ANGLES
ti = rx * 0.5;
tj = ry * 0.5;
tk = rz * 0.5;
qx.x = sin(ti); qx.y = 0.0; qx.z = 0.0; qx.w = cos(ti);
x = 0.0; qy.y = sin(tj); qy.z = 0.0; qy.w = cos(tj);
cos(tk);
qy
qz.x = 0.0; qz.y = 0.0; qz.z = sin(tk); qz.w
MultQuaternions(&qx ,ftqy ,ftqf ) ;
MultQuaternionsUqf ,&qz,&qf ) ;
quat->x = qf .x;
quat->y = qf .y;
quat->z = qf .z;
quat->w = qf .w;
}
//EulerToQuaternion /////////////////////////////////////////////////////////
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
GRAPHIC CONTENT
This gives us the
axis and angle that
we need. To use it
in OpenGL, the
last thing to do is
convert angle §
from radians to
degrees, because
OpenGL is expect-
ing degrees (Listing
2). Since the data is
now in the correct
format for
OpenGL, the actu-
al display code is
very straightfor-
ward (Listing 3).
By multiplying these quaternions
together, I get a single quaternion rep-
resenting the orientation of the object.
The code for this conversion is shown
in Listing 1.
This routine is set up to handle rota-
tions in the order xyz. If your rotations
are stored in a different order, you may
need to be make some adjustments. By
combining functions, it is possible to
speed this up a bit. In the code that
accompanies this article, I reworked it
as a secondary conversion routine.
OpenGL Implementation
Since my eventual output is
through OpenGL, I need to con-
vert the quaternion back into some-
thing useful. The glRotatef command
takes an axis to rotate around and the
angle of rotation about that axis. This
axis-angle representation was explored
briefly in Chris Hecker's column
"Physics, Part 4: The Third Dimension"
(Game Developer, June 1997, pp. 17-18).
This representation is very similar to
the quaternion form. The quaternion is
defined as a rotation of § about the axis
(x, y, z) such that
q = cos((|)/2) + x sin((|)/2)i + y sin((|)/2)j +
z sin((|)/2)k
Therefore, the axis and angle of rota-
tion can be retrieved from a quaternion
by simple algebra.
4> = acos(Q w )*2
x = Q x /sin((t>/2)
y = Q y /sin((^/2)
z = Q z /sin(((>/2)
Where Does That Bring Us?
The question is, "If quaternions are
so great, why not use them all the
time?" You certainly could. However,
most people find it difficult to visualize
the orientation of an object as a quater-
nion. People (at least 3D programming
dweebs) are often more comfortable
visualizing an orientation as Euler
angles. This is an important considera-
tion when you're creating a tool that
will be used by artists and program-
mers. I'm sure people confronted with
a dialog box asking them to enter the
quaternion for a rocket ship would
have some problems. At least Euler
angles are a little more friendly.
The sample application uses the pre-
viously mentioned conversion routines
to display an object using either Euler
angles or quaternions. By switching
between these display methods, you
can see that both representations result
in the same final display (Figure 3).
Using these routines, I now have a
method for converting my Euler angle
rotations into quaternions and then
displaying them. Whew! This has been
a lot of difficult stuff. But now we have
the foundation. From here, I need to
start animating these orientations.
Next time, I'll add the interpolation
code and build an application to dis-
play the in-betweens. ■
LISTING 2 . Converting the angle to degrees.
///////////////////////////////////////////////////////////////////////////////
II Function: QuatTo Axis Angle
// Purpose: Convert a quaternion to Axis Angle representation
// Arguments: A quaternion to convert, a axisAngle to set
///////////////////////////////////////////////////////////////////////////////
void QuatTo Axis Angle (tQuaternion *quat,tQuaternion *axisAngle)
{
/// Local Variables lllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
float scale, tw;
///////////////////////////////////////////////////////////////////////////////
tu = (float) acos(quat->w) * 2;
scale = (float)sin(tw / 2.0);
axisAngLe->x = quat->x / scale;
axisAngLe->y = quat->y / scale;
axisAngLe->z = quat->z / scale;
// NOW CONVERT THE ANGLE OF ROTATION BACK TO DEGREES
axisAngLe->u = (tw * (360 / 2)) / (float)M.PI;
}
// QuatToAxisAngLe 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
LISTING 3 . Using quaternions in OpenGL
II TAKE THE BONE EULER ANGLES AND CONVERT THEM TO A QUATERNION
EulerToQuater nion (&cu rBone->rot , &cu rBone->quat) ;
// QUATERNION HAS TO BE CONVERTED TO AN AXIS/ANGLE REPRESENTATION
QuatToAxisAngLe(ftcurBone->quat,&axisAngLe);
// DO THE ROTATION
glRotatef (axisAngle. m, axisAngle. x, axisAngle. y, axisAngle. z);
drawModel(curBone) ;
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
Hardware for OpenGL Developer Tools
When developing an
advanced real-time
3D game engine and
production tools, it's
important to work on decent hardware.
Likewise, when artists and designers work
on those tools, performance means pro-
ductivity. Now obviously, the 3D artists,
modelers, and animators should have
great systems. Any of the fully OpenGL-
certified high-end graphics cards would
also work well for production tools.
But what about the programmers, level
designers, balance testers, and so on? I
would like a great production environment
for everyone. Luckily for me, certain "mar-
ket pressures" have pushed some con-
sumer graphics hardware towards OpenGL
support. For me, OpenGL support means
that the images that I see in my modeling
and animation program and in my toolset
are identical. The material and display
parameters match exactly. This is very
important at the design level no matter
which final game application API is used
(OpenGL, Direct3D, or proprietary). Low-
cost OpenGL acceleration allows compa-
nies to get high-performance game pro-
duction stations for all the team members.
To be a good system for game produc-
tion, a graphics card should support
acceleration in multiple windows,
because most 3D development tools
require more then one viewpoint. It
should support most, if not all, display
features of the target platform. It should
also have decent performance in the tool,
as well as being able to run the actual
game application at a decent rate.
The 3Dlabs Permedia 2 chipset is an
excellent choice for a low-cost OpenGL tool
platform. 3Dlabs has much experience
working with OpenGL through its Glint fam-
ily of cards, and it shows. Its OpenGL dri-
vers are stable and robust. The Permedia 2
adds acceleration of glLines, which really
can help a development tool. The lack of
some blending modes may be an issue
when previewing the application. However,
the price/performance ratio is great.
The new Nvidia Riva 128 chipset is a
great performer. It has excellent potential
as an all around perfect production card,
as well as great speed and image quality
and fast Windows acceleration. Right
now, the OpenGL drivers are in testing,
but I have high hopes for this card.
The 3Dfx Voodoo Rush chipset is very
interesting. It's certainly the king of the
hill (right now) as far as actual game per-
formance. However, the OpenGL support
beyond full-screen game applications is
questionable. The alpha driver that was
released was unusable in a development
environment, and I have yet to see
whether the new beta OpenGL driver will
accelerate graphics in a window. That
said, a Voodoo card to run the game
application combined with either of the
other boards for the production tools is a
great environment.
The recent announcement that
Microsoft is working with SGI to speed up
and improve OpenGL driver development
could change things dramatically. I will be
watching closely.
—Jeff Lander
I've only scratched the surface of the math behind quater-
nions. But as you can see, a whole lot of history rests behind
them. People interested in reading more about quaternions and
their use in computer graphics should read these sources.
Hamilton, Sir William Rowan. "On quaternions; or On a New System of
Imaginaries in algebra." Philosophical Magazine, XXV:10-13, 1844.
This is the original paper describing the actual discovery.
However, it's very mathematical and probably not necessary
unless you have the desire to learn the underlying theory.
Shoemake, Ken. "Animating Rotation with Quaternion Curves."
Computer Graphics (Proceedings ofSiggraph 1985] 7:245-254,
Shoemake, Ken. "Euler Angle Conversion." Graphic Gems II. Academic
Press: 222-229, 1994. These papers were essential to my under-
standing of the conversion process. The paper in Graphic Gems
II actually handles the general case of different rotation orders.
Watt, Alan and Nark Watt. Advanced Animation and Rendering
Techniques. New York: ACN Press, 1992. This is a very good book
that helped me with the background and comparisons
between Euler angles and quaternions.
Laura Downs has written a proof that quaternions really do rep-
resent rotations. It's available at http://http.cs.Berkeley.edu/
~laura/csi84/quat/quatproof.html. Thanks to Ian Wakelin of
Rhythm and Hues Studios for turning me on to that site.
Also be sure to read Nick Bobick's article "Rotating Objects
Using Quaternions," in the Feb. 1998 issue of Game Developer
for other uses and a matrix-based approach.
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
Bock J
bif J o a U White
ARTIST'S VIEW
Communication
Triangles
rom love triangles to children manipulating their divorced parents — if
you get three people together, you usually get problems. My theory is that
this triangle issue is behind a common problem that artists face: dealing
with small team conflicts. Let's explore this by starting with an example.
Our Beloved Team: Albert,
Dave, and Pam
Albert Artist is a con-
tract artist for Dave
Developer, an experienced,
one-man game develop-
ment "company." Dave's
got a signed deal with Pam
Producer, who works for an
up-and-coming game pub-
lishing company and was
just promoted from assis-
tant to manager of her own
project. Dave's worked with
Albert before, but they
didn't work closely togeth-
er. Pam doesn't know either
one very well, but has spent
more time with Dave, negotiating the
contract and approving the game
design (which they've agreed is some-
what vague, but good enough, given
the aggressive development schedule).
Let's start with Pam, sipping her morn-
ing mocha and reading the day's first
wave of e-mail:
from: Dave Developer (dave@gameguy.com)
to: Pam Publisher (ppubllsherCbigdogs.com)
subject: Art Quality Control
As far as accepting artwork, I think this
should be my job, since I'm the one ultimate-
ly responsible for the product. I'm open to
other ideas, though.
-Dave
Pam sighs and leans back, wishing
she could find the perfect outside
developer for this project — some
super-group with clean, efficient code
and excellent artistic abilities and
tastes, all the while affordable, avail-
able, and easy to work with. But this
project is just a basic sequel, not excit-
ing enough to attract the top-notch
developers. In fact, her boss isn't jazzed
about it either — that's why the bud-
get's not huge and the marketing effort
is strictly average, which is also why
she's working with a small, unknown
company such as Dave's.
Still, she's going to make the game as
stupendous as possible. If she can get a
Josh White runs Vector Graphics, a real-time 3D art production company. He wrote
Designing 3D Graphics (Wiley Computer Publishing, 1996), he has spoken at the
CGDC, and he cofounded the CGA, an open association of computer game artists.
You can reach him at column@vectorg.com.
really solid game (fun game-
play, good art, bug-free
code, on time, and within
budget) out of Dave and his
V contractors, she'll get good
I marketing and good distrib-
I ution. With a little luck, it'll
I do pretty darn well in retail.
I That will be quite an
achievement for her.
And Dave can do it — she
knows he's good. The code's
going to be great, but she is
a little worried about the
artwork: is it going to be
any good?
Her coffee forgotten, Pam
rereads the e-mail and pon-
ders Dave's assertion. It
makes sense, and she trusts
Dave to do the right thing for the pro-
ject, in general. The thing is, she's afraid
that Dave can't tell first-rate characters
from clip-art, so she's got to somehow
ensure that the art is great. "I've got to
do what's right for the project here," she
reminds herself. This essential truth
fuels her tickle of concern about the art-
work as she composes her reply.
from: Pam Publisher (ppublisher@bigdogs.com)
to: Dave Developer (daveQgameguy.com)
subject: Art Quality Control
»I think this should be my job since I'm the
»one responsible for the product ultimately.
»I'm open to other ideas, though.
I need some additional assurances that the
artwork quality is going to be adequate. I'd
like to see samples from the artist and get
some proof that this art is going to be AAA-
grade. You're in charge of the project — I
just want to confirm the art quality.
-Pam
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
ARTIST'S VI E W
Hunched in his darkened workspace,
Dave's thumb-drum solo takes on a
louder, almost militant beat as he
rereads Pam's reply. "Is Pam micro-
managing here?" he asks himself. "I
guess I can understand why she'd want
to see proof of artwork." Still, a nag-
ging feeling of doubt eludes his mental
fishing. On one
hand, her request
makes sense —
she's just trying
to make sure
it's a top-
notch
product.
But it def-
initely bugs
him that she's sec-
ond-guessing his
choices. He
knows that if he's
not in control of
his own project, it'll be Disasterville.
But Pam isn't like that. So far, she's
been really good about not micro-
managing. Besides, it's not like he has a
choice — she's the publisher, she's got
the cash — and all she wants is sample
artwork. Semi-reassured, he writes to
Albert.
from: Dave Developer (daveDgameguy.com)
to: Albert Artist (artdude€cheapisp.com)
subject: Art Quality
Hey Albert,
So I need some samples to show to the pub-
lisher. They're curious what you do, how it
looks, and such. Forward me a couple .JPG
attachments, O.K.? They want to see nifty
stuff, such as those SIGGRAPH demos or some-
thing all flashy. Whatever you've got handy.
-Dave
Albert heaves a long-suffering sigh.
Why? He's already shown Dave his
demo reel, and Dave said, "Rockin'
art!" and didn't bring up art skills
again. So what's going on now?
He herds the cat off of his lap and
leans back, rubbing his eyes.
Something important is happening
here, his intuition tells him. There's
been a subtle shift, and now he's not
sure who's calling the shots. What if
the publisher doesn't like his work?
Will he have a second chance? What if
Dave likes something and this mysteri-
ous publisher doesn't? What then?
Albert's chair squeaks as he slowly
spins 360 degrees. He knows that he
and Dave can do good work together —
Dave will give Albert the space he
needs to make quality artwork, and
Dave will help Albert make it fit into
the technical limitations of the game.
But with a third party involved, he's
not so sure. Nightmares flit through his
head: end of the project, Pam casually
says, "Um, how about a more, y'know,
cartoony feel?" He might be stuck beg-
ging for approval from the headless
monster of their publisher's art direc-
tion, as Dave stands helplessly at his
side. How can anyone make decent art
under these conditions?
Options
In my opinion, this project is in
trouble. "Hey, whoa!" you say,
"What's the big deal? It's just a simple
project, and all these people possess
good intentions and reasonable judg-
ment. Heck, nothing's even happened
yet — they're only talking about a
problem!"
First, the timing issue: On most bad
projects, once we see actual problems
(someone quitting, major design
changes, and so on), it's too late to do
much about it. The time for quick
action is when the project is teetering
on the brink — when everyone's talking
about it, but nothing's happened yet.
Second, the most important risk to
the project is loss of goodwill, not qual-
ity of artwork. If Pam isn't careful, she
could easily give Dave and Albert the
impression that she's an ignorant boss
who wants to play developer and get
her "touch" on the product. If Dave or
Albert overestimate or get defensive
about their skills, Pam will probably
have to confront them with a truthful
assessment of their roles in the grand
scheme, and that might cause a very
severe loss of trust.
So let's assume that our intrepid
team is reasonable. Yeah, they're all
good, fair, hardworking, and honest.
They've promised to floss twice a day
and to make every effort not to get
pointlessly emotional about this. Even
so, I still say that the project's goodwill
is at serious risk. Let's appreciate the
gravity of the problem by looking at
some possible solutions, starting from
Albert's point of view.
One option for Albert is to insist on
taking art direction from Dave. That's
how things currently are — legally
Dave and Albert have a contract and
Albert has no connection to Pam.
Theoretically, if Albert keeps up his
end of the deal with Dave, he has
nothing to worry about.
Unfortunately, that's not realistic,
because Pam holds Dave's purse
strings. If she's forced to work through
Dave for artistic concerns, this will
quickly prove frustrating for everyone:
Pam would rather talk directly to
Albert, and because Dave isn't an art
director, he's not going to be good at,
or enjoy, taking Pam's criticism and
turning it into improved artwork. Poor
Albert will labor to decipher Pam's
intent through Dave's warped filter.
This is a likely recipe for poor art quali-
ty, as well as frustration all around.
Another option is for Albert to work
side-by-side with Dave, and for both of
them to report to Pam. Pam gets direct
access, and Albert takes responsibility
for (and has more control over) the
artwork quality. This is a big change.
Albert will probably be paid by Pam.
But Dave's control is weakened
because Albert is now a peer, not a
subcontractor. And Pam's job gets
harder. No one person (besides Pam) is
responsible for the project: if Albert's
artwork is late, that's not Dave's prob-
lem anymore. So, Pam becomes
involved in project management and
takes over more of Dave's duties. This
may create resentment between her
and Dave. What if Albert isn't quali-
fied for the job? Designing artwork is
actually quite different from building
art from a design. In fact, Albert him-
self may not want the job. Most pro-
duction artists leap at art design/lead
job opportunities, but happy produc-
tion artists may turn down stressful sit-
uations such as this.
A third option is for Albert to try to
compromise. Satisfy
Pam by dis-
cussing art
quality directly
with her,
while still
working
under Dave.
Compared to
the previous
two options,
this one sounds
more reasonable,
and it has the appeal
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
of "good faith." But it's high risk; it
could combine the worst parts of the
two previous options. Also, Albert loses
because he would have the responsibil-
ity of art quality without the recogni-
tion, power, or pay of the actual job.
For instance, it's likely that Pam will
ask Albert to make art changes. Since
she's not an art director, they may not
be good ideas, and Albert isn't in a
position to object. Another problem is
simply that Albert now has two bosses.
What will he do if Pam and Dave give
conflicting assignments?
So, neither Dave nor Pam is really
qualified to direct artwork, and Albert
wasn't really hired to design the
game's "look" — he was hired to be a
production artist. This leads us to
another seemingly reasonable idea:
hire an art director (let's call her Ann).
If someone can be responsible for art
direction, it relieves the pressure on
Albert and Dave, and Pam has some-
one to trust. Another important
advantage is that Pam can use Ann's
strong resume to make the whole pro-
ject look better, which will help get
internal support for better budgets,
marketing efforts, and so on.
But, of course, there are drawbacks.
First, we have the obvious problems
that come with a larger team (more
complex communication and greater
cost, to name just a couple). Game
developers are well aware of how
nightmarish huge projects can be, and
it should be obvious that our little
threesome is not predisposed to throw-
ing people at a problem. But perhaps
Ann could work only part-time, keep-
ing costs low, and if she's good, the
other problems may be minimized.
The real problem is rinding someone
good. In this case, "good" means an
experienced, available, affordable art
director who can also walk into this deli-
cate situation and actually improve
things. It would be very easy for Ann to
give Albert orders that accidentally or
carelessly conflict with Dave's previous
direction, which is a quick road to dis-
trust (and thus disaster). Art directors'
jobs require debating with programmers.
Because Dave is "in charge" in addition
to doing the programming, the art direc-
tor's going to have to be a darned good
communicator to get Dave's trust and
respect, earn Pam's confidence, and keep
the art quality high, all without stepping
on anyone's toes.
Solutions
Yuck! What a bunch of weak
options. None of them is the nice,
neat happy-ending choice for which
we'd all hope. Let's step back and ask
what our beloved team could do to
make the whole situation better.
They need to realize how important
this issue is, and put a lot of effort into
permanently solving the problem. That
means understanding the actual risks:
damaging goodwill and thus, the pro-
ject's future, as well as potentially hav-
ing poor artwork.
Ideally, you don't have to choose,
but I believe a few talented, coopera-
tive, focused people with a little money
produce better products than a team
that has a pile of cash and a bunch of
uncaring, uncoordinated workers.
That's why creating and preserving
goodwill is such an important skill.
Unfortunately, goodwill is incredibly
delicate. It's part of both Pam's and
Dave's jobs to protect the project
against such disaster.
How would awareness change the
situation? Here's one possible outcome:
Pam starts by taking a close look at
what, exactly, worries her. What would
be satisfactory art quality, and what
would not? What kind of proof will be
enough, given that she knows she's not
an art director? If she's really good,
she'll also probe for underlying "icky
issues" — unpleasant but true motiva-
tions for her concern. Is the problem
really art quality? Perhaps she's sub-
consciously looking for some direct
control over production. Or perhaps
she's interested in forming a line of
communication around Dave because,
deep down, she doesn't trust him com-
pletely. Once she addresses these ques-
tions honestly with herself (and let's
assume that she's comfortable with her
own motivations), she will use those
answers to set concrete, achievable
objectives.
Next, Pam meets in person with
Dave and explains exactly what wor-
ries her and precisely what proof of
quality artwork would make her com-
fortable. She might carefully use other
products as artistic references (some
developers hate this, but it works),
such as "I think we need terrain like in
Magic Carpet — see this screenshot?
Like that, but maybe simpler — and
with animation as good as Road
Rash." If she
uses reason-
able refer-
ences, Dave
will likely be
open and
grateful for a
specific
goal rather
than a
vague, unsolvable concern. Again, Pam
must be very careful not to ask for
unreasonable goals such as "Art that is
better than Riven, but real-time, and
with flowing hair!" This will definitely
not impress Dave, and may well lead
to serious conflict. After this has been
defined, Pam and Dave have to agree
upon who approves the art. This is
really Pam's decision — if she feels
comfortable that Dave understands
what she wants, she will ask him to
decide. Otherwise, she'll put off the
decision until she knows whether or
not Albert can handle it.
Once Pam and Dave agree on what is
"good enough" art quality, they'll
explain it to Albert (who will find their
explanations of quality artwork to be
overkill). Pam and Dave together will
ask Albert to show that he can provide
that quality of artwork. As Albert pre-
pares samples, they'll stay in close
communication, exploring what is rea-
sonable and reassuring each other that
they're all striving for the same thing:
the best possible product, in whatever
way they can.
After Pam and Dave take a look at
Albert's artwork, it's decision time.
First, they'll decide whether or not
Albert is capable of art direction. If
they don't agree, Pam's got a serious
problem. She may well decide to use a
different developer rather than attempt
to patch such a major rift.
That should give you the idea. The
decision process would continue in
this way until they are all satisfied that
the game is good enough or they give
up on the project (a perfectly reason-
able option — better than wasting
time, money, and effort if the project is
essentially flawed).
It's tough creating good games, and
technical challenges are only part of
the problem. I write about it often
because I think that we all need more
of this "psychological" problem-solv-
ing. Tell me what you think at
column@vectorg.com. ■
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
LESSONS LEARNED FROM RIVEN
o get the most bang from your prototyping buck, consid-
er these two essential guidelines: Prototype Early and
Prototype Often. By definition, prototypes allow you to demon-
strate new ideas in a rudimentary form, examining and consider-
ing different possibilities before committing resources to those
ideas. Waiting until the release of your alpha to test your first pro-
totype is generally a useless gesture: your alpha represents most of
your final game. If you discover at this point that the design
requires a major overhaul, it will probably be too expensive to
undertake. Instead, create your first prototype for the initial
design meeting — and then never stop. According to Rand Miller
of Cyan, "Whether you're showing it to someone or just using it
z z
MARCH 1998
http://www.gdmag.com
PROTOTYPING GAMES
PraloUping for *-D Gamed
■4. mmm
5. $ttff**ft**&M ______ _
FIGURE 1 . As the game develops from stage to
stage, the cost of making a change increases
exponentially.
FIGURE 3 . Cyan used flowcharts like this one from 1994 to
refine Riven's more complex story structure.
for yourself, the interesting thing
about a prototype is that the more
feedback you get, the easier it is to fix
things before you lock them down"
(Figure 1). In light of these principles,
this article will take an in-depth look at
cheap — and not so cheap — prototyp-
ing techniques used to design Riven:
The Sequel to Myst.
During the early days and weeks of a
project, the design is small and proto-
types are simple to make and revise —
clearly, most of your prototyping
should be done at this point. Think of
your design process as a spiral that
iteratively visits the four process quad-
rants of Design, Prototype, Test, and
Learn, starting with your kick-off
meeting at the center and time (and
costs) increasing outward with each
loop (Figure 2). The more cycles that
you complete earlier in development,
the tighter the spiral becomes and the
Prototyping for 5-D Garnet
HQwtaFrvtv Cheaply ] p*S«
more money
you save.
Since each
iteration rep-
resents the
validation of
good design
ideas and the elimination of bad ones,
you can be assured that your project
matures on the inherent merits of its
design and not merely on its creators'
enthusiastic ideas of what it should be.
Obviously, elements such as art
direction and code performance won't
be prototyped until later in the design
process. However, general game con-
cepts, basic character interaction, and
what the player will experience can —
and should — be worked out before
you've purchased your first pixel. Since
you haven't yet made a design commit-
ment, your prototypes can be very
rough and cheap as you work out these
important details; later
on, as your designs solid-
ify and become more
complex, they will
become much harder to
prototype and test.
FIGURE 2 . The Design Spiral: separate the good
ideas from the bad early in production while they
are still cheap to fix.
Prototype the Concept
and Story
All great adven-
ture/mystery games
focus on the story. Prior
to puzzle design, you
should explore your
game's structure and the player's goals.
Your new world won't have an inte-
grated adventure until it has plot twists
and major characters. Nonviolent 3D
games are driven by exploration; with-
out a unifying narrative, the experi-
ence is of walking from one obtuse
puzzle to the next.
Simple, one-page flowcharts excel at
prototyping during this stage because
they hold just enough detail to represent
the story's structure. For Riven, designer
and co-director Robyn Miller created
flowcharts to map out the different end-
ings. These flowcharts offered Riven's
designers the flexibility to depict the
consequences of the player's actions and
the multiple ways to end the game
(Figure 3). Later on, when the Cyan
team designed the puzzles and environ-
ments that surrounded these plot points,
the skeletal flowchart prototype was eas-
ier to use than a 40-page treatment.
Once you've established the outline
of the story, your 3D game needs a
place where the action happens. As he
did for Myst, Robyn sketched maps of
the different islands on graph paper,
labeling the paths and buildings that
the player would encounter along the
way. During initial game design meet-
ings, Robyn could erase and redraw as
Nicole Lazzaro, president ofXEODesign Inc. and production manager for the French and German versions of Riven, has for eight
years combined her knowledge of cognitive psychology, video, origami, HyperCard, and the Xerox machine to create customized 3D
environments. XEODesign provides design services to numerous companies including Broderbund, Mindscape, and Maxis. For more
information on prototyping and a schedule of upcoming seminars (including this year's Computer Game Developer's conference)
visit www.xeodesign.com or send e-mail to nlazzaro@xeodesign.com.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
PROTOTYPING GAMES
much or as little as required during the
evolution of the design. 'There was an
awful lot of scribbling, scratching, and
erasing at those first meetings, "
remembered Robyn. "But by the end of
a few weeks, we had recorded the basic
game play for the world, though it
wasn't too pretty/'
The overhead view concentrated
design on the location of the puzzles in
each environment and how those puz-
zles related to the others on the five
islands. Done with pencil on graph
paper, conundrums such as the loca-
tion of the waffle iron puzzle could be
planned with a minimum of fuss
(Figure 4). If Cyan's artists had already
modeled the islands on the computer,
those same changes might have taken
weeks instead of minutes. Pencil
sketches of the big picture kept the
ideas flexible and easy to change.
Prototype the Fun
To invent a new game paradigm,
prototype the fun. In order to go
where no other title has gone before,
you may need to experiment with the
game play outside of the computer —
especially when your game's technolo-
gy hasn't been invented yet. Putting
your design on the computer before
the basic game concepts are in place
increases the likelihood that the end
result will resemble someone else's
good idea. Leaving behind the elec-
tronic limitations of a flat screen and a
mouse frees you to discover interesting
interactive possibilities.
Ideally, prototyping game play
should spawn "outside the box" think-
ing; knowing what makes an activity
entertaining will help create its ana-
logue within the game. Get the creative
juices flowing by using a number of dif-
ferent prototyping tools. Don't limit
yourself — a video camera, a cell
phone, an office cubicle, a roll of butch-
er paper, and even a toy car can assist in
prototyping (Figure 5). Your imagina-
tion and creativity will take care of the
rest. "If you're talking about prototyp-
ing," said Robyn, "your tools should
allow you to be flexible. They should
allow you to change things right up to
the last minute." Just remember that
the cost of those changes increases as
the design progresses (Figures 6 and 7).
Given the fact that Riven' s primary
storytelling relationship is between the
player and the environment, Cyan's
designers prototyped
the fun before creat-
ing any art by host-
ing virtual tours of
the Riven maps to
test the basic out-
line of the game.
"We sat down with
people from the
company and ver-
bally walked them
through the game,
told them what
they saw, and asked them what they'd
do — almost a role-playing kind of
thing — before there were visuals,"
Rand explained.
This verbal prototyping provided
flexible and cheap feedback on story
and game play because all that was
necessary were maps and puzzles ideas.
"In my mind," said Rand, "it was more
to see how people responded to explor-
ing this place... you're surprised a lot
of times by what people get and what
they don't get." Before designing any
of the art, Cyan's creative team needed
to know what puzzles people would
find interesting, which ones were too
hard, how players built the story from
the environments, and what sorts of
actions players found fun to do.
Because they role-played the puzzles,
Riven's designers could see in the play-
ers' faces what was fun about exploring
and discovering the story and world,
and they could pursue ideas created
spontaneously by the group. Robyn
FIGURE 5 . Playing games away from the computer can
prototype what makes something fun.
FIGURE 4. The power source for the Fire Marble domes
always involved the waffle iron puzzle, but its location
changed from the Book Assembly Island to Temple
Island.
frmaJi Fast
FIGURE 6 . Prototyping tools that cannot represent a lot
of detail are generally faster than those that can more
accurately represent the final product.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
PROTOTYPING GAMES
/ \
Prototyping Goals and Tools
Change Between Project Stages
Project Definition Goal: Prototype the Concept & Vision
Story
World & Puzzles
Player Experience
c
r ^
r \
Flowcharts
Overhead Maps
Role Playing
&
Walkthroughs
Outlines
Brainstorming
V
)
^ J
k J
Design Goal: Prototype the Player's Perspective
Environment
Interaction
Art Direction
Video
f
>
f >
/
3D sketches
Interactive
Concept Sketches
Storyboards
Foam Core
Storyboards
Storyboards
Script
Origami
)
V J
\
J
i
1
\
>
r
Production Goal: Prototype Art and Video Production Techniques
Environment
Interaction
Art Direction
Video
\
r a
r
3D Models
Camera Placement
Flatshaded &
Scale Model
Grayscale Maps
Interactive
Wireframe renders
Bluescreen
Clay
Storyboards
Camera Placement
J
J
V )
J
FIGURE 7. Asa game goes from concept to design to product, different aspects
of the design require different prototyping methods.
remarked, "It worked really well, and
we did it earlier on Myst, too. At least it
gave us an idea that what we had
designed was going to work."
Prototype the Art
After outlining the essential story,
location, and game play, the
focus of your design should shift to
what the player will see and hear.
Rough line drawings can refine how
objects and terrain will work together
to build the environment and story.
At this stage, concept sketches on
paper will help you explore ideas
more quickly and create a consensus
of the story world to be built in 3D
(Figures 8 and 9).
Low-resolution prototypes have two
benefits: they are quicker (and thus
cheaper) to make, and they focus dis-
cussion on broad concepts rather than
on details such as color and texture
maps (Figure 10). By limiting the
number of items and keeping the
drawings rough, you can make 50
black and white sketches for the cost
of a single RGB image.
Unlike paintings in a museum, game
art unfolds in response to the player.
As Riven's designers discovered, paper-
based sketches of objects and terrain
didn't provide enough feedback when
the game design focused on player
interactions; these elements required
new prototyping methods.
Just as role-playing can prototype
player interaction from maps, interac-
tive sketches and storyboards make
designing art that responds to player
behavior much easier. Scanning story-
board-style sketches into the computer
and making them interactive is an eco-
nomical way to create useful 3D envi-
ronments early in the prototyping
stage — line drawings in HyperCard are
easier to change than Softimage-ren-
dered images. With an electronic story-
board, the designer can click through
the environment and make changes as
easily as erasing lines on paper.
In Riven, game play changed the
look and function of one particular
water-filled room several times during
art production; at one point, even the
waffle iron puzzle floated here.
Evolving the design after the room
was finally rendered required throw-
ing out several screens, updating the
geometry, adding new textures,
shaders, and lighting, and rendering
new art (Figure 11). By comparison,
switching between different concepts
while still in sketch form would have
sacrificed a few pieces of paper and
some pencil lead. "Next time," said
1
FIGURE 8 . Richard Wander Wende started the design for Gehn's inkwell by drawing many bugs.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
PROTOTYPING GAMES
FIGURE 10. In this Riven forest, rough art quickly prototypes the relation-
ship between the player's path and the trees.
FIGURE 9. A hand-drawn sketch at this
resolution can be created faster than
working with a 3D modeling package,
even in wire frame.
Robyn, looking back, "I personally
would want to set up the whole thing
with storyboard-style sketches, so you
could have a playable or semi-playable
game in rough-sketch form. I think it
would save time in the end because
we spent so much time changing this
thing, which was for naught because
we threw stuff away as we changed it."
Rand Miller and designer and co-
director Richard Vander Wende, how-
ever, disagreed somewhat with Robyn
and cautioned that too much detail in a
rough-sketch prototype interferes with
the final art direction. As Richard
explained from his previous experience
in animation, "Many painters and illus-
trators I know will produce preliminary
sketches, thumbnails, or even drawings.
Quite often, they adhere strictly to
those drawings, and the final version
lacks a certain freshness. [With Riven],
there was an element of spontaneity —
we didn't always know how it was
going to work. We weren't always try-
ing to copy exactly some sort of proto-
type version, which I think was great."
Prototype Medio Production
Techniques
With Riven's style of interface,
the settings for the 3D camera
position, height, tilt, and viewing
angle all determine what the player
sees. Done well, a sequence of still
screens creates a sense of motion that
draws the player in; done poorly, how-
FIGURE 11. This room holds a submersible elevator and went through
several artistic and functional changes. Changing the purpose of this
room during the rough sketch stage would have involved fewer produc-
tion hours — or days.
ever, it invites player confusion that
even wonderfully rendered 3D art can-
not dispel. As Richard pointed out,
"You just can't put the camera where
the mannequin's eyes would be all the
time. More often than not, the camera
needs to be cheated one way or anoth-
er to allow you to see more of the stuff
that you would naturally be focusing
on — sometimes in small rooms, it's
even pulled back through walls to cre-
ate a wide enough view to contain
everything of interest."
"Although it seems fairly natural
when you click," said Rand, "we didn't
take for granted how much you move
— a lot of work went into how far we
set the next camera position and what
angle it would be placed at, and how
much you would see out of the corner
of your eye to inspire a turn."
Although the design team didn't cre-
ate full storyboards for Riven, they did
develop an ingenious world assembly
tool in HyperCard called WorldStarter,
which made positioning the camera in
the computer-generated models easier.
To save time and to get more itera-
tions, they started with wireframe and
flat-shaded views along a path or
around a room and then modified the
camera position and angle until the
navigation looked smooth (Figure 12).
Because the artists could click through
the images just as a player would, they
could easily grasp how it felt to move
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
PROTOTYPING GAMES
through the space (Figure 13). By build-
ing Riven in thisfashion, subtle prob-
lems became apparent at an earlier
stage of the art production. When
inconsistencies arose, the designers
could make changes and tweak more
confidently than they would have oth-
erwise, as their prototypes provided
more context. As Rand remarked,
"Probably most peopledon't realize the
extent to which every camera position
was cared for there, and what we went
through to create them."
In time, more screens were added.
Detailed renders replaced theflat-shad-
ed views (Figures 14 and 15). "If we
had pictures that we needed to add,"
Rand said, "we'd walk through to that
area, get to that dead end, and then
just start adding in the new pictures.
Since thefeedback's immediate, we
weren't afraid to tweak things, which
was very important to us."
Prototype Terrain
All too often, production proto-
types show you what not to do.
For Myst, Robyn created a grayscale
topographical map for each island
that was then extruded in Strata, with
the lighter-shaded areas being higher
in elevation than the darker ones. He
considered using the same process for
Riven, but he had some concerns: not
only were Riven's islands much bigger
than Myst's, the puzzles required
more precise control of the elevation
(Figure 16).
Asa production test, Robyn modeled
Gehn's Survey Island in clay and
bought a 3D pen to digitize its contours
(Figure 17). "The only way we could get
it to look neat on the computer was to
use tons of geometry, so much so that
the computer wasn't handling it very
well," recalled Robyn. "Wethought
that if we gave the rock more of a styl-
ized look, we could use a lot less geome-
try. But when I began to digitize the
thing, it wasjust a complete failure. It
wasjust horrible working with the digi-
tizer; it wouldn't read the points at all,
or it wouldn't put them together cor-
rectly." After struggling with theclay
model, the digitizing effort was shelved,
and Robyn and Richard went back to
th e gray seal e extrusi on s.
Scale Models for Actors
Sizing models created by different
arti sts so th ey I i n k togeth er seam-
lessly is but onech alien ge of building a
3D space. It was for this reason that
Cyan added another valued team
member: Harold (Figure 18). "A long
time ago, we had created a very simple
mannequin that we would put into our
environments to make sure that the
scale felt right," said Richard. "We built
all of our environments to scale, but in
addition to that, just putting a person
there — or a computer-generated
model of one — really helped out."
Harold was soon cloned and his exper-
tise shared among all of the artists.
Being a virtual six feet in height, he
could be brought on the scene to test
the player's line of sight, as well as the
scale of the surrounding terrain. With
al I of the separate objects that were
imported into the model to create an
environment, the Harold prototype
proved to be valuable aid in keeping
everyone's work in the same ballpark.
Position Lights, Camera, and Talent
for Bluescreen
Live action in 3D computer graph-
ics requires precise positioning of
the cameras and lights used to photo-
graph the actors against a bluescreen
background. In most cases, you can
speed the production process by
preparing your models ahead of time
and using them to prototype your
final composites while on the set and
before shooting a single frame. Cyan's
designers brought to thestage their
Softimage models on an SGI and a
Macintosh for video compositing.
Having built everything to scale
before the shoot, they spent most of
the day setting up the lights and cam-
era positions to match those in the
computer-generated background —
and discovered that the integration
would work better than they had
imagined. "Because we had built our
models to scale and we had lighting
objects in thecomputer," commented
Richard later, "we knew where the
light sources were: they were six feet
off the floor and were spaced exactly
five feet apart. We could duplicate
that on the set and that worked really
well." Using their models for refer-
ence, a video frame was placed over a
still from the model. Through this
iterative prototyping process, the cam-
era position, lens angle, and lighting
were adjusted until theeffect was
seamless.
Prototype Animations
Depending upon your needs, you
can prototype animations very
cheaply by creating story boards that
can be used by themselves or scanned
into a computer for simple animation.
If your team is beyond the story board-
ing stage, you can mock up your envi-
ronment in a software package that
yields low-resolution walkthroughs,
GAME DEVELOPER MARCH 1998
http://w ww. gdmag.com
such as Virtus Walkthrough or the Quake level
builder Deathmatch Maker. Both of these
packages quickly set up simple texture geome-
try that players can walk through. As your ani-
mations become more polished, you can take
advantage of some of the simple visualization
tools that most 3D packages contain: wire-
frame animations can be played in real time,
and for more detail, flat-shaded animations
will render in a fraction of the time required
by full versions. You can use these low-resolu-
tion images as references for making changes
before the final render, which may take many
hours or days to complete.
"Softimage's tools are really flexible, and are
one of the biggest strengths of that whole
package I think," said Richard of the 3D appli-
cation used to create Riven. "A lot of these
animations were so complex in terms of the
geometry that we knew we were only going to
have one shot at fully rendering this thing —
it was just going to take so much time. So we
really tried to make sure that we had seen it as
many times as possible in its various primitive
stages, including wireframe and shaded
views." For example, even with four SGI
servers, the submarine adventures at the bot-
tom of Jungle Island Bay lived in the queue
for months because the atmospheric shaders
and reflections caused the animations to creak
out very slowly, frame by frame.
The fast playback of the wireframe anima-
tions allowed Riven's designers to adjust the
player's experience before committing to a
lengthy full render. Rand explained:
"Especially for the major animations, we
would always render flat-shaded views — or
we would render out the wireframes so that
they could play at full speed, just so we could
see the action and make sure. Even though it's
a subtle effect, if you get to the end of that
lumber car ride and there is no pause before
falling out of the bottom of the car, it just
doesn't feel right."
Prototype Navigation: Click-Through or
Virtual Bubble?
Early on in Riven's design, the Cyan team
prototyped different navigational systems
by doing some test renders. These production
prototypes compared the click interface style
from Myst with several that provided more
freedom of movement, such as QuickTime VR.
The designers found that while a VR experi-
ence more closely resembled moving through
a real world, they lost control of how the clues
in the environment were revealed to the play-
er. Richard remarked, "Since the presence of
other characters in these games is still pretty
FIGURE 13. Artists could make changes as they walked through the
world, even if that world was a low-resolution one.
1
ii i | mm
■ itn
f If*
.ipi jMLM
FIGURE 14 . Interactive walkthroughs provided feedback on how the final
art would look together.
FIGURE 15. Using HyperCard artists could quickly define and modify but-
tons to fit a particular screen and drag new screens from a list into the
fields below the view area.
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
PROTOTYPING GAMES
FIGURE 16. This grayscale map of Riven' 's Temple
Island shows the higher elevations in lighter colors.
The colored areas indicate areas to be kept at the
same elevation.
slight, the primary relationship is between the participant
and the environment. So we tried to imbue that environ-
ment with as much meaning as possible to maximize the
richness of that relationship between the environment and
the participant. If you're just running through the game and
not seeing things and not hearing things, then you're cheat-
ing yourself."
The step-through interface created a more contemplative
pace, encouraging the player to look for clues. 'The click-
through interface, to a certain extent, slows you down and
allows you to digest what you're seeing and what you're hear-
ing better than if you were just running through it at
marathon speeds," said Richard. Riven's designers wanted
players to really look closely at the environment around
them to notice the subtleties. By comparing some tests in VR-
type environments with the more traditional click-through
interface, they decided that a virtual bubble would constrain
their game design too much. The primary drawbacks were:
1. It degraded quality of the art (because of compression or
rendering on the fly).
2. It led to a loss of control over where the viewer looked (as
if one were making a film without edits).
3. It did not support multiple states. (For example, an open
and closed door required two different bubbles instead of
just two different screens.)
4. The VR interface encouraged the player to speed through
the terrain, emphasizing the speed at which they could
solve the game's puzzles. (Click-through interaction
slowed the viewer down, emphasizing the importance of
observing.)
Being Flexible versus Being Finished
Prototypes are guide books rather than detailed road
maps. Designs can change frequently, even at the end of
the title's development. 'The one thing I have to say about
the way we did things was that it was a lot of flying by the
seat of our pants," said Richard. 'The fact is that you can have
stuff planned out on paper, but making it real and detailed
and complex and functional often necessitates changes and
adjustments in the contiguous objects and spaces." No matter
the extent of your prototyping efforts, recognize that story-
boards or even the "final script" never matches the release.
"Flexibility is what allowed us to keep tweaking and twisting
and making it better," said Robyn. "At the same time, flexibil-
ity is what prevents you from ever being done. So as long as
you understand that and can work within those constraints,
you can get the best possible production available given the
amount of time and money you have."
Prototype to prepare your ideas — seed the creative terrain
and make it fertile. Use design prototypes to become familiar
with the space, so that when production starts and design
decisions lock down one by one, your team will understand
the opportunities and share the same vision. ■
Special thanks to Rand and Robyn Miller, Richard Vander
Wende, Bonnie Staub, and Richard Corley for their help, hospi-
tality, and access to Riven's prototypes.
FIGURE 17. Robyn created a clay model of Gehn's
Survey Island in the hopes that it would be easier to
digitize than to extrude from grayscale.
FIGURE 18. Harold, Cyan 's cyber stunt person, ( whose
head and shoulder can be seen in the lower right cor-
ner) provided reference for the scale of models and
camera placement. How big were objects compared to
Harold? What could Harold see from different places
along the path?
GAME DEVELOPER MARCH 1 9 9 J
http://www.gdmag.com
SNEAK
▲
P i g
i h mT li
2.0
E>ring environments that provide visual
presentations of a program structure
that are more conducive to a creative
■ L state of mind can make a dramatic
k difference in enhancing your
L creativity. Years back, I
remember sitting my three-year-old son on my lap while at
the computer, showing him what I had just made using
HyperCard and asking, "What would you like now?" I imple-
mented his demands then and there. The results were way
beyond what I could have imagined on my own. Apparently,
Craig Hickman built Kid Pix the same way. Of course, even-
tually we had to rewrite everything in a real programming
language, but for project take-off, HyperCard was fine.
More recently, fun-oriented development has become a
nearer reality with the advent of mFactory's mTropolis, now
under the wing of Quark. Note that I haven't said the fun
has arrived. But mTropolis certainly gives us a window on
what the future will bring.
h if T 3 v i F
r c c m a n
€■ i rti ■ i +*i iMm, m
.|H rr h- ili i 1 1
ri-Uu-h. m ^ ji ^r*.+k- jt#-w
] vrrs«in 2*1
Enter mTropolis
As a beta site for mFactory, I've been working with
mTropolis since it's alpha stages five years ago. I've
used it to create several major prototypes and lots of experi-
ments and toys. mTropolis has an attractive feature list,
including a true object-based structure with its own
extendible object model (the mFactory object model, or
MOM). It compiles impressively efficient code. The graphi-
cal drag-and-drop interface provides a clear abstraction of
what's going on, at least in general terms. It's cross platform.
It has convenient ways to manage and relink your resources.
But the most empowering feature is something called
BOP. That's how visionary Norm Gudmundson, the creator
of mTropolis and chief engineer of mFactory, refers to his
paradigm for software development, Behavior-Oriented
Programming.
BOP!
For a better concept of what Behavior-Oriented
Programming provides and how to take advantage of it,
I'd like to use a parallel to our concept of the universe. At
one time, everyone thought of the solar system, and of the
universe, as having one absolute center. Whether that was
the earth, the sun, or somewhere else, was subject to debate.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
I
But this absolute center could only be in
one place.
Then Albert Einstein came along and
proposed a new way of looking at things.
Now, as his students have explained,
anywhere that you wish could be the
center. You just need to create an appro-
priate model.
Similarly, procedural code is all about
getting from a beginning to an end. The
procedure that takes you there is the
absolute center of everything, branching
out in routines and subroutines, but all
in one path with one vortex.
Object code begins to break out of that
paradigm, but it reaches it fruition with
BOP. Here, every time you work with
any of your objects, you must see all of
the rest of the world that you've created
from the perspective of that object. How
will that object react to the rest of its
world? What will it do with the informa-
tion that it receives from "out there"?
What will it tell its world about its own
internal state? In fact, every object
becomes the center of its universe.
Reusability is the most salient advan-
tage of BOP. A BOP programmer ensures
that all of his objects are as self-sufficient
as possible and avoids being context-spe-
cific at all costs. He does this principally
by designing his objects for as generic an environment as is
practical and by establishing consistent protocols in all his
worlds. An object that sends messages that mean one thing
in one world and something else entirely in another is not
very valuable. A valuable object operates similarly and pro-
vides meaningful data in a wide variety of contexts.
Adaptability is another point chalker for objects. A "rigid"
object, such as a scroll bar that remains the same size in
every environment, is a rather useless asset. A good object,
then, receives messages about its environment and knows
what to do with them. A good world, it follows, is one that
provides its objects with meaningful information.
Complicated objects that cannot be broken into smaller,
self-integrated components are a pain — a pain to work with
and a pain to debug. A BOP programmer starts off by acquir-
ing many small and simple self-reliant objects. Once he has
a rich library of those basic components, he can carefully
build them into larger "organisms" that have more specific
functions. If he builds them well, another programmer will
be able to use them in his worlds without having to know
much about their inner contents.
BOP is a realistic simulation of the real world. Imagine how
your world would be if it had been made by conventional pro-
grammers. From a passive viewpoint, everything might look
mFactory s Official Position on 3D
asked Norm Gudmundson, creator
of mTropolis and chief engineer at
mFactory, what he was planning
to do about 3D in mTropolis.
Here's the e-mail response:
"mFactory has always been very inter-
ested in integrating 3D technology into
mTropolis. Unfortunately, when we tried
that a couple of years ago, there was no
standard 3D technology to build a suc-
cessful twitch 3D game (in my opinion at
least). This was because most successful
twitch 3D games use a proprietary 3D
engine or a heavily modified standard
technology designed specifically for the
game. It's my feeling that 3D twitch
games will always exist on the very edge
of the technology wave, just beyond
where mFactory can reach.
"Does this mean that mTropolis will
not incorporate 3D technology? No way! I
think real-time 3D is strategically impor-
tant to all 'software solution composers'
such as mTropolis. However, the objec-
tive of 3D in mTropolis will be to stress
real-time 3D simulation and possibly pro-
totyping 3D games, not to act as a 3D
twitch game development environment. I
think we will all have to leave that to the
whiz kids hacking away in the back
rooms. At least for a while yet.
"With real time 3D simulation integrat-
ed into mTropolis, BOP could really take
off. After all, the whole point of BOP is to
break down software problems into the
fundamental components we find in the
"real" world. I can't think of a paradigm
that mates as perfectly with real-time 3D
as BOP, and since mTropolis is the only
environment that uses BOP so far, the
marriage just has to be made."
I also asked Norm if he thought that
those "on the edge" 3D programmers
would be able to extend mTropolis's
future 3D capabilities using MOM. He
was honest and answered that he can't
know until the alpha and beta phases of
3D integration. But, "mTropolis has
always stressed the need to extend its
supported features and 3D would be no
exception."
— Tzvi Freeman
O.K. But then, let's say you grab a bucket, walk over to a pond,
and lift out some water. Within the context of the bucket, the
water would probably behave entirely differently than it did in
the well. Bring the bucket into your kitchen, and it may just
suffer a fatal error and crash your entire reality.
We generally see our world as being made of many pieces,
each having their own properties and interacting with each
other in specific ways. BOP means thinking about your pro-
ject in the same way.
True BOP mastery still eludes me, but in many instances,
I've managed to create a wonderful and valuable animated
object with multiple behaviors in one project, dragged and
dropped it into an entirely different project, and after a few
minor tweaks, have it do all the same tricks in an appropri-
ate mode for its new environment. mTropolis 2.0 has made
some important fixes that make such moves more reliable.
Rocket BOP
This is not a tutorial, just a loose description. I'm using a
Power Macintosh with mTropolis 2.0. I've just opened a
new project window. That three year old mentioned above,
who acted as a lap consultant on my first children's game, is
Tzvi Freeman teaches Multimedia and Game Design at the University of British Columbia Multimedia Certificate Program. He has
designed several commercial games and acted as a consultant on many more. He is interested in hearing your comments at
tzviF@aol.com.
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
SNEAK PEEK
FIGURE 1 A . The Layout Window in edit
mode...
now ten. He falls into my home office
at 3:20pm, looking for what's cool
today. Great, just in time to help with
this article.
When asked, "What do you want to
create today?" his response is a typical
10 year old's unintelligible, hyper-bab-
ble, which I interpret as, "I feel like
making things blow up."
My son reminds me that we have a
wonderful outer-space-object exploding
animation that works well with a small
explosion sound effect he created. I
have that object exploding in another
project — all the necessary behaviors
are already set. So I open that project,
find that object, and drag and drop it
into my new project. Now all it needs is
something to send it a message that
says, "explodelnSpace," and it'll go up in
solar luminance, leaving behind a
burnt crust.
I need something to attack the
space object. The CD that mTropolis
comes on contains a few libraries of
ready-made behaviors, as well as
some objects that use them. There's
a rocket in one library that's pro-
pelled by the arrow keys. It also has
momentum and drag built in.
I drag and drop the rocket into
my project (Figures 1A and IB).
Then, I drag a small icon from the
Modifier Palette — this one is called
the Collision Modifier — configur-
ing it with a few mouse clicks
(Figure 2). I set the rocket object's
behavior so that whenever it hits
another object for the first time, it
will tell that object explodelnSpace
(Figure 3).
I've just dragged two objects out
of two entirely different projects
authored by two different people
who are in no way coordinated with
E^h_J -^m*m"m fa aid ■ ■ m m
m
|BMH r I „ —
■* 1 w
[ VIMI#l4H<-
FIGURE 1R. ...and in run-time mode.
each other. If they are well-built
objects that follow all the BOP
guidelines, they will work together and
we'll have an explosion on the screen.
Hitting one stationary object in open
space doesn't quite compete with the
neuro-traffic in my kid-consultant's
brain. I dig up a neat random-motion
behavior to drop into our space-object,
setting it to terminate when the
explodelnSpace message arrives (Figure 4).
For even more excitement, I repeat-
edly [Option] -drag the object to make
multiple copies. Since the behaviors
are all "aliased," I can still modify the
behavior of all of them by modifying
any one of them. But since the vari-
able that sets velocity is specific to
each object, I allow the consultant to
adjust each one to a different setting.
He also adjusts size and color for each
object, no typing necessary. Total time
to construct this prototype: approxi-
mately 15 minutes.
Uniitled-Z; Structure
PIS
Untitled SwHom
[j^ Untitle Syfcseeton
Bfl Untitled Shared Seen*
Effl Untitled Seine
(jf9| ijrge-tRaifcft.mTMjfl
Controllf 4 Drountf Melian
Arrow K«j i Motion Cnntf
Vrap- Ground Moiinri
■ fa mTocf, AffPirinc*
m
n
FIGURE 2. Dropping a new Behavior
Modifier from the Modifier Palette into my
rocket.
BOPping the Head Against
the Wall
As can any technology,
BOP can be quite frus-
trating. The good news is that
most of the hassles are things
that have visible solutions to
them. Here are a few of my
major gripes:
The first two are problems
with the scriptor interface.
It's wonderful, especially for
chronic typo-slobs such as myself, to
be able to just drag, drop, and click an
entire program together. But the con-
venience — at least in its present incar-
nation — doesn't come without severe
compromise. For just one example,
double-clicking, typing, then closing
20 icons to adjust 20 variables can get
kind of tedious — apart from the fact
that you can't view them all as one list.
Of course, you can use a List Modifier
to set them all, but that was imple-
mented as an awkward afterthought,
and it's very clumsy to use.
The Structure View provides a kind
of outline of the entire program, simi-
lar to an indented outline that you
might use for an abstract of an article
you'd like to write, or the contents of a
book. Establishing good naming con-
ventions for yourself helps make this
view all the more meaningful. The
problem is that there's only so much
that you can see on a single screen. In a
long or complex project, the script
view resembles watching a football
game through a tiny crack in the
fence. mFactory could easily allevi-
ate matters by allowing multiple
views of the same window, and at
the very least, providing printing
capabilities. A print out could pro-
vide detailed information that's not
available in the structure window.
Speaking of reviewing your script,
whatever happened to programmer's
comments? The only place for these
are in the miniscript modifiers. If the
Structure View is meant as a window
on your project's architecture, then
why can't I annotate it?
A Behavior Modifier has its own
view — quite a clever one. I won't
bother with all the details here, but
the window is too easy to clutter
and, again, has no place for com-
ments other than in miniscript mod-
6AM E DEVELOPER MARCH 1998
http://www.gdmag.com
L
1
!_..
I
**** (ml
1
-i 9
I
■
■■■nl
■
FIGURE 3 . Selecting a message for
the Collision Modifier to send.
ifiers. Going into a complex behavior
created by even the best mTropolis
designer and trying to adapt it to your
project can be a nightmare. Yet that
capability should be one of the salient
features of the tool.
As far as problems inherent to the
concept of BOP, they fall into two cate-
gories: issues associated with stereo-
typed behavior, and the extreme diffi-
culties that are loaded into the
programmer's brain in conceiving all
the dynamics of his creation.
Consider my rocket zooming about
telling everything it hits to explodelnSpace.
That's fine when there's only a handful
of objects and most of them are respon-
sive to that message. But, just as in our
reality, not everyone wants to hear you
say, "Have a good day!" every time you
bump into them. In most games, such a
behavior could have undesirable conse-
quences. For one thing, the CPU is over-
loaded with processing this message and
all the instances of it as it travels down
the parent-child hierarchy- tree.
One solution is to make your mes-
sages more discerning and specific. This
message's transmitter could get some
information about an object before
engaging it in conversation. This infor-
mation would help the transmitter
determine whether the object might be
responsive or not. But then, you're just
trading off one overhead for another.
mTropolis allows you to limit the
range of a message's transmission. You
can send it to the whole project, to an
object's parent, to siblings, or only to a
specific object. You can even stipulate
that this message doesn't "cascade"
down the hierar-
chy. In my expe-
rience, however,
these solutions
severely compro-
mise the reusabili-
ty of your objects.
And reusability is
what BOP is all
about.
Taking another
cue from real life,
the solution to
problems generat-
ed by stereotyped
behavior is intelli-
gence — some
sort of AI. An
object has to be
able to learn its
new environ-
ment, to adapt to become as efficient
as possible there, and to store all that
data separately from its basic behavior
data, so that it won't necessarily apply
it to other environments.
BrainBOP Overload
i OP, as it exists now, is not meant
* for dummies. It excels when the
task is to build something simple using
a few prebuilt objects and some of the
more straightforward modifiers. But as
soon as your project has reached any
level of complexity, it can become a
major brain-stretcher. As mentioned
earlier, you're no longer looking at
things from one point of view. You're
forced to see things from the perspec-
tive of each of your objects and then
imagine how all of them will relate to
each other.
mFactory is working hard on their
debugging tools. Progress with naming
conventions will also help. In the mean-
time, mTropolis is not scriptor-proof.
Is mTropolis a tool for nonprogram-
mers, such as animators, writers, and
others? The fact is, there are plenty of
artists using the tool right now, quite
successfully. Not having to memorize a
set of commands and syntax helps.
Most of the learning curve is just in
twisting your head around to think in
new ways. Nevertheless, it helps to
have a code hacker around to create
extensions when you need them, or to
deal with the mathematics and algo-
rithm matters.
■
FIGURE 4 . The Behavior Window for the motion logic of
the rocket. By selecting the Coast message track, any modi-
fiers associated with that message are easily distinguished.
For generating good ideas and trying
out new behaviors and interdynamics of
elements from past projects, nothing
beats mTropolis. But beware, your pro-
ject will be molded by mTropolis's limi-
tations and demands, as any good pro-
grammer always falls for the most
elegant solutions within whatever envi-
ronment he's working.
If you're new to the game develop-
ment scene and don't yet have an
engine all your own, mTropolis may be
the place to start. If you have an engine
that you're satisfied with already, you
might consider fusing it with
mTropolis using MOM. Or just use
mTropolis as a prototyping tool. ■
mFactory /Quark
Burlingame, Calif.
650-548-0600
www.mFactory.com
Price: $995 estimated street price for
version 1.1. Free upgrade to version
2.0 for new 1.1 purchasers.
Systems Requirements: The minimum
configuration recommended for
authoring in mTropolis is a 68040 or
Power Macintosh with
• 6MB RAM (for 8-bit color) or 8MB
RAM (for 24-bit color)
• System 7.x
• QuickTime 2.5
• Sound Manager 3.2
The minimum configuration recom-
mended for playback is a 68030/
68040/Power Macintosh or
486/Pentium PC with Windows
3.1/95/NTand 2MB RAM.
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
Bock.
PROG R A M M 1 N C
TUTORIAL
Peeki g
Th gh P al
btf Adrian Peres
n the few eons of cyber-time since BattleZone, it seems that com-
puters have finally become fast enough to handle complex 3D
geometry that approaches what we see in the real world. Every new
Quake/Duke/Tomb Raider engine seems to have more and more
polygons in an average scene. Rasterization speed in particular has
gone through the roof in the last few years. With installed 3D accel-
erator cards in the millions and many computers this past holiday
season shipping with them pre-
installed, a high fill rate doesn't seem
to be as much of a pressing problem
today. Many developers are likely
breathing a sigh of relief — at least
those who hate trying to squeeze cycles
out by tweaking assembly routines.
However, a perfect world does not a
high fill rate make. As worlds become
more complex and game players kick
and scream for more features, a much
bigger problem is beginning to arise:
hidden-surface removal. Effectively
managing large data sets of polygons,
culling the polygons that are complete-
ly out of view, clipping the polygons
that are partially out of view, and
drawing the polygons that are in view
is no simple task. Also, while game
developers generally agree on the
"best" way to draw texture-mapped or
Gourad-shaded triangles, hidden-sur-
face removal is still an area of great
research. There really is no best way to
do it, only a number of different tech-
niques that have their own strengths
and weaknesses.
Binary space partition trees (BSPs),
which have been used in game devel-
opment with increasing frequency late-
ly, have a lot to offer. For the sake of
discussion, a BSP tree is a binary tree
that divides an n-dimensional space at
each node with an (n-l)-dimensional
hyperplane until the world is divided
into a set of convex subspaces (at
Adrian Perez attends Carnegie Mellon University, majoring in Computer Science with
a focus on graphics and artificial intelligence and a minor in Mathematics. He is cur-
rently working in his spare time on a hybrid BSP/portal engine he calls Zeta. You can
contact him via email at amperez+@andrew. cmu.edu.
which point they can no longer be
divided). Most importantly, BSPs give
you a perfectly sorted order from front
to back or back to front of any scene
with an astonishingly O(n). This
means that as the number of polygons
(n) increases, the processing time (rep-
resented with an O) increases linearly
with n. Straight polygon sorting, on
the other hand, is represented as 0(n 2 ),
meaning that this method gets much
slower as the polygon count increases.
The drawback to this technique is a
one-time, relatively time-consuming
BSP tree-building phase. BSP trees are a
complex and abstract topic in and of
themselves. A more complete descrip-
tion than I could include here can be
found in Computer Graphics: Principles
and Practice by Foley, van Dam, et al.
(Addison Wesley, 1996).
However, BSPs are not a cure-all.
Constructing a BSP tree is time con-
suming, so much so that it can only
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
FIGURE 2 . Portal rendering techniques allow you to draw only
pixels that are visible from the camera's viewpoint.
FIGURE 1 . Sliding doors in Doom is one way
of working around the restrictions associated
with a static data set.
realistically be done before executing
the game, which completely restricts
you from modifying the data set in any
way apart from limited workarounds
(such as the doors that slide up and
down in Doom, shown in Figure 1).
Static worlds are fine, but eventually
they'll cramp designers, and players
will demand more. Also, BSPs don't
have occlusion built in (I think that
they do support this feature, but the
important thing is that nobody knows
how to do it yet).
For example, imagine you're drawing
the inside of a house. You generally
won't be able to see any polygons
upstairs from any point downstairs
besides the stairwell. However BSPs
cannot cull those upstairs polygons
automatically. Doom got around this
by having a front-to-back buffer —
every scanline was drawn once and
only once, and it traversed back until
nothing else could be drawn. Although
amazingly effective, this method trans-
lates very poorly to 3D. Edge sorting
took care of the overdraw in Quake,
but no edge sorter in the world can
handle all the polygons for every frame
of a typical 3D world at any reasonable
speed. So id incorporated a potentially
visible set (PVS), where the visibility at
each node is precomputed and stored,
so at run time only a small list of nodes
needs to be processed. In practice, the
PVS is not a BSP technique. It's really a
concept belonging to portal rendering.
Portal Rendering
Portal rendering is an alternate
way to treat 3D scenes. It's been
around since 1971 and has been (or
will be) used in games such as
Descent, Duke
Nukem 3d,
Unreal, and
Prey. It operates
under a surpris-
ingly simple premise: if I'm drawing
two rooms that are connected through
a doorway, after drawing the room
that I'm currently in, the only part of
the screen that hasn't been drawn yet
is the area that can be seen through
the doorway; if I restrict the drawing
space to the dimensions of the door-
way, I'll only draw those pixels of the
next room that I can actually see, giv-
ing me zero overdraw (Figure 2). The
world is represented as a collection of
convex hulls, connected with poly-
gons that are tagged as portals. Convex
hulls are collections of polygons that
have no concavities. You can draw a
line from any point inside the hull to
any other point inside the hull and, by
definition, that line will never leave
the dimensions of the hull. Cubes, for
example, are convex hulls that can be
considerably deformed before they
become concave (Descent used a con-
nected cube scheme to accelerate por-
tal rendering). To draw a scene, you
start with a base portal with the
dimensions of the screen (or the area
that you're drawing) and draw the cur-
rent hull you are in. Every time you
encounter a polygon that's tagged as a
portal, you recurse into the next cell,
clipping the new portal against the
current portal until you cannot see
any new portals.
Portals work remarkably well when
the conditions are right. The Build
engine (used in Duke Nukem 3D,
Redneck Rampage, Blood, Shadow
Warrior, and others), for example,
uses 2D portals to a great effect. Instead
of having a front-to-back buffer as
Doom has, Build games draw convex
sectors, clipping the scene to portals as
it recurses backwards. The Build engine
achieves moving sectors by performing
virtually no precalculation on the
scene. It is thus dynamic: doors can
swing out, gears can spin around, and
walls can explode. In addition, as a
pure portal system, the Build engine
allows floors above floors, another
effect that wasn't possible in a straight
BSP system such as Doom.
Descent uses portals to reduce over-
draw to zero and to accelerate culling
(Figure 3). A Descent level is a collec-
tion of convex six-sided polytopes (3D
polygonal objects). Each polytope is
connected on each side with, at most,
one other polytope. To draw the scene,
you simply recurse and clip the portals
to each other as you step down the list
of cubes. Both Doom and Descent run
on fairly low-end machines, yet feature
an amazing amount of eye-candy for
the horsepower.
- %
FIGURE 3. Descent uses portals to
reduce overdraw to zero and to accel-
erate culling
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
PROGRAMMING TUTORIAL
FIGURE 4 . Each portal creates a new set of clip-
ping planes based on the camera location and the
locations of the portals vertices.
clipping planes
Implementing Portal Rendering
To implement a portal-based
engine, you have several options.
The most fundamental design decision
is whether you want to use 3D clipping
or 2D clipping, each of which has its
advantages and disadvantages. 2D clip-
ping is typically done on a per-scanline
basis, and since most triangle raster
code has built-in clipping support, this
isn't a very tall order to fill.
Start drawing your image with a
table of extents, so that each scanline
has a start, end, and active field. As you
reach portals, modify the table, clip-
ping each scanline and calculating the
new extents to determine if the current
scanline is covered by the polygon. At
this point, drawing the polygon is sim-
FIGURE 6. An overhead view of
which polygons are drawn and which
are culled in this article's sample
application.
ply a matter of drawing
only the active scanlines
and only the appropriate
pixels in those scanlines.
The good news about
this method is that draw-
ing polygons requires only
a few lines of logic code
within the function, as
well as a couple of if state-
ments in the code for each
scanline. The bad news is
that this method trans-
lates very poorly to 3D
hardware, which generally
draws a triangle at a time,
rather than scanlines.
Also, although a few extra
if comparisons may not
seem like much, they tend
to stack up when you're
rendering at 640x480 reso-
lution and clipping in three dimen-
sions rather than two — especially
when you're drawing large sets of
polygons. In practice, portal rendering
using 3D clipping may be faster, espe-
cially as resolution, portal count, and
polygon count increase.
When implenting 3D clipping, start
with a clip volume that consists of the
area visible on the screen. When you
encounter a portal, clip the polygon
to the 3D volume and create a new set
of planes based on the two vertices of
each edge and the camera location
(Figure 4). The good news is that this
isn't much more computationally
demanding than traditional 3D clip-
ping, although it requires a little more
time to generate the new frustums.
The problem with this method is that
you're clipping more often, and thus,
you have to perform a few
sqrtsO to normalize the new
planes when you clip them to
the portal and generate the new
frustum. Each sqrtsO requires
about 100 cycles each — not too
good for performance.
This is the method that the
included engine (available on
the Game Developer web site)
uses. The file it loads has poly-
gon information for all eight
cells (four rooms and four door-
ways), and all polygons have an
ID tag. This tag is -1 for nonpor-
tal polygons (the walls, the ceil-
ings, and the floors). For the
clear portal polygons that repre-
FIGURE 5 . A view of the Device
Independent Bitmap from the engine
that accompanies this article.
sent the doorways, the tag contains an
index into an array, indicating which
cell in the data set lies on the other
side of the portal.
Here's how it works. At each frame,
the camera is moved according to user
input. The camera is bounds-checked
to make sure it's in a cell and the index
of the cell is noted. Then a new frus-
tum is generated. Finally, a single call
is made to draw the current cell with
the current frustum. The function
automatically clips the frustum to any
portals and recurses as needed. It draws
the view into a Device Independent
Bitmap (DIB) and then blits to the
screen (Figure 5).
It's important to note that the initial
clip volume only has four planes. A far
clip plane is unnecessary because draw-
ing will stop before any appreciable
distance. A near clipping plane is not
recommended when using this render-
ing method, because as you get very
near a doorway, the portal itself
becomes clipped and the next room is
FIGURE 7. The Quake engine does not imple-
ment portal rendering because each level
contains a prohibitive number of portals.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
not drawn until you enter it. When I
created the engine that accompanies
this article, I kept it restricted to flat
shading and didn't use any lighting or
mirrors, which cut down the code com-
plexity. There is also an overhead view
(Figure 6) so you can see the polygons
being dynamically clipped as the cam-
era moves around.
The Drawback of Using Portals
Just as BSPs (and, in fact, as any hid-
den-surface removal algorithm),
portal rendering has its faults. Clipping
portals is not a computationally simple
thing to do, and in most portal render-
ing systems, it ends up being the limit-
ing factor. This is why, for example,
Descent slows down considerably in
large, complex rooms: the clipping of
literally hundreds of portals bogs down
the game. John Carmack once told me
that he had tried implementing portal
rendering in the Quake engine, but
found the overhead from clipping por-
tals to be prohibitive. He said that in a
typical Quake level, there would be lit-
erally twice as many portals as poly-
gons (Figure 7) — the geometry alone
would kill you.
Implementing Good Portal Effects
However, portals are not without
their perks. You can achieve an
amazing amount of special effects with
portals, effects that are difficult (if not
impossible) with other hidden-surface
removal methods.
Lighting. Real-time shadows are always
difficult to accomplish in 3D graphics,
but portal rendering offers a very ele-
gant way to do it. For every light in the
scene in your general area, perform a
portal render using the light as the vir-
tual camera location and its spotlight
as the initial frustum. When that's
done, you have a set of polygons visi-
ble from the light. Tag those polygons
that were trivially accepted as lighted
and those that were trivially rejected as
unlighted. Make note of any split poly-
gons and store this split information in
the global polygon list (perhaps using
pointers in the polygon structure to a
temporary polygon pool that stores the
lighted/unlighted members of split
polygons). Perform these actions for
every light. Then, when the scene is
drawn, you proceed as normal, using
the lighted/unlighted/split information
for drawing. When a conservative
number of lights is used in a full-portal
environment, you can implement
moving, turning spotlights that light
the scene in real-time.
Mirrors. A real-time mirror is another
feature with which portals can help.
Some portals can be tagged as mirrors,
which means that instead of recursing
into the cell on the opposite side, we
recurse again into the original cell,
using mirrored camera and frustum
information. To mirror the camera, use
a dot product of the camera location
and the plane's normal to find the dis-
tance from the camera to the origin
(Figure 8). You subtract from this the
distance between the plane and the ori-
gin, which gives you the distance from
the camera to the plane. Then double
this value (to get the distance from the
camera to a point on the opposite side
of the plane that is the same distance
from it), multiply it by the normal (giv-
ing you a vector that goes from the cam-
FIGURE 8 . To mirror the camera, use a dot product of the camera location and
the plane's normal to find the distance from the camera to the origin.
^Camera
plane norma^
s Origin v
Reflected Camera-^
FIGURE 9 . To reflect the camera axis, treat the plane normal and all normals of
the axis as if they were coming out of the origin.
\
axes\
plane normal
<
d
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
PROGRAMMING TUTORIAL
era to the reflected camera), and add the
displacement to the camera vector.
To reflect the camera axis, you use a
similar procedure. The most notable
difference is that you treat the plane
normal and all normals of the axis as if
they were coming out of the origin
(Figure 9). You find the distance from
each vector to the plane, double it,
multiply it by the plane normal, and
displace it. Caution must be used here,
especially when two mirrors can see
each other, as an infinite loop can
occur. One way to deal with this with-
out losing much visual accuracy is to
treat the mirrors as imperfect, slightly
darkening the image on each reflection
and ending recursion after enough
reflections make whatever you draw
black. You can reflect lights off of mir-
rors with the same approach, creating
some incredible special effects.
Displacing Portals
You can displace portals using
many of the same ideas that I've
discussed with regard to reflecting por-
tals. Instead of just reflecting the cam-
era about a certain plane, you move it
to a completely new location. You can
try this for yourself in Duke Nukem 3D.
Bring up the automap, zoom all the
way out, and then jump into some
water. YouTl see yourself jump to a dif-
ferent corner of the map as soon as
you enter the water. Portals such as
this can be used for closed circuit TV
displays, for quickly jumping to differ-
ent areas of the map, or for an eerie
floating doorway that leads into a
completely different room. If the
source and destination portals are par-
allel, you can simply displace the cam-
era by their difference when you tra-
verse the portal in the drawing
sequence. Nonparallel portals are a bit
trickier, requiring more matrix math
than I have space to discuss.
A lot of buzz is in the air regarding
half-portal techniques. Quake 2, for
example, uses what John Carmack
calls "area portals" to help with hid-
den-surface removal. In this tech-
nique, levels are sectioned off into
areas connected by doors, and the
parts on the other side of closed doors
are not considered by the engine for
drawing. As soon as the door opens, a
flag is raised, signaling that the far
area is drawable.
Learn Something New
hether you're programming
games, Internet security sys-
tems, or ugly scientific visualization
programs, you should focus on good
(meaning abstract and hard to visual-
ize) algorithms. There's no "right" way
to do anything, merely a bunch of
good ways (and a whole lot more bad
ways). As the programmer, it's your
responsibility to look at what you want
to accomplish and to choose the best
algorithm to reach your goal. To do
this, you need to know about as many
algorithms as possible, including their
strengths and weaknesses. You need to
be able to maximize the good and min-
imize the bad by tinkering with these
algorithms. Portal rendering has a lot
of very good points and a lot of not so
good points, and it deserves considera-
tion when you're analyzing possible
hidden-surface removal techniques. ■
Visibility Computations in Densely
Occluded Polyhedral Environments by
Seth Jared Teller, University of
California at Berkeley. Available at
http://sunsite.berkeley.edu/NCSTRL/
Database and Display Algorithms for
Interactive Visualization of Architectural
Models by Thomas Funkhouser, Univer-
sity of California at Berkeley. Available
at http://sunsite.berkeley.edu/
NCSTRL/
3D Engines List. Available at
http://cg.cs.tu-berlin.de/~ki/
engines.html. The list has information
on many types of 3D engines (includ-
ing mine). Some of these are based on
portals.
Homepage of Jacco Bikker (aka The
Phantom) at
http://www.geocities.com/Cape-
Canaveral/5402/index.htm. This page
has the source code to a scanline-clip-
ping portal rendering engine and some
information on how he built it.
Homepage of Nark Feldman at
http://www.geocities.com/Silicon-
Valley/2151/. This is the home of the
in-development Win95GPE, which has
documentation about (among other
things) portal rendering, DIB program-
ming, and Direct3D 5 Immediate Mode.
w
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
lockj
PRODUCT
Ma im m De h:
Ki e i 3D S di MAX 2
b if J o a It White
ecause many of us game artists will see more of 3D
Studio MAX 2 in 1998 than we will see of our
spouses, we'd better take a really hard look at
the upgrade before we commit. As with any-
thing else on which we spend lots of time and
money, we need fair, honest opinions that are
closely based on first-hand experience. My own
work focuses on low-polygon, real-time
3D modeling and animation, not pre-
rendered work. For example, we RT3D
artists deliver to our clients 3D models
(such as VRML .WRL files), not .AVIs.
So new rendering effects such as lens
flare don't rock my world. I love things
such as better interfaces, vertex editing
improvements, and really good
import/export options.
Regardless of how you have or will
use MAX 1, you may wonder if the
$795 upgrade for MAX 2 is worth it.
The quick answer is that if MAX is your
main 3D tool and you're not poor, you
should buy the new version. This
upgrade is a big one — the scripting
language alone will be worth the
money. And there are plenty of other
major reasons to upgrade.
Let's take a look at it: Figure 1 is the
obligatory screen capture. Compared to
MAX 1, it hasn't changed that much.
But despite the similar look, MAX 2 has
a whole lot of changes, some of them
very substantial improvements. Many
small, annoying problems in MAX 1
have been fixed in MAX 2. Kinetix has
hyped this point heavily, and the com-
pany is right to do so. Everywhere you
turn, existing features are easier to use
and more powerful. For example, the
align tool now works on subobjects;
that means you can align vertices now.
I'd be curious to know how many bugs
and features improvements were
Josh White (josh@vectorg.com) has been building real-time 3D models for games
since 1990. He runs Vector Graphics, a company devoted to real-time 3D; cofounded
the GGA, a community of computer game artists (www.vectorg.com/cga); wrote
Designing 3D Graphics, the first book on real-time 3D modeling; is involved with
the CGDC; and writes about computer artists... but he admits that all this really just
kills time between soccer games.
implemented for MAX 2; I bet it's in
the thousands. For me, these many
small fixes make up one of the most
compelling reasons to upgrade.
Most of the major improvements
and rebuilds fit into a few general cate-
gories: modeling; materials, rendering,
and animation; interface; display
improvements; documentation and
support; MAXScript; and miscella-
neous. For each category, I'll highlight
a few of my favorite features, discuss
the ones that I've actually used in
detail, and list others that I think are
interesting but didn't actually use.
Modeling
One of my favorite improvements is
MAX 2's more holistic approach
to editing model vertices, edges, and
faces. This is big news for real-time
modelers. Editing vertices in MAX 1 felt
as if I was tinkering under the hood of
the model where I didn't belong. I had
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
PRODUCT REVIEW
■
FIGURE 1. MAX 2 compared to MAX i: evolution not revolution.
to keep the stack collapsed all the time
or I'd get spurious problems. MAX 2's
interface for subobject editing is cleaner
and easier to use, though I haven't used
it enough to be reassured that the stack
problems have been addressed.
The addition of NURBS modeling is
the other big news. Many of the MAX
users that I talked to were very excited
about this feature. After playing with
it, I think it's a pretty nifty improve-
ment as well. You can update the
NURBS surface in real time, watching
the surface change on the screen as you
move a control point or curve.
Unfortunately, you can't create holes
in a NURBS surface, and I found parts
of the interface clunky (Figure 2).
The manuals have some good back-
ground on NURBS modeling, but con-
spicuously lack any detailed how-to
information for basic NURBS proce-
dures in MAX. I didn't see any printed
tutorials on NURBS either. Regardless, I
stumbled through the procedure, and
once I had a NURBS object on the
screen, things got easier. I especially
like the Refine tool: as you move the
icon toward the control lattice, new
vertices magically appear, just where
you hoped they would. At least, that's
how it happened for me when I played
with it; I have yet to build anything
really complicated with NURBS.
I also like the new Preserve modifier,
which constrains a mesh to a certain
volume. It can also constrain the curva-
ture of a surface by enforcing minimum
angles between face normals (in much
the same way that Autoedge does).
Shape modeling has several excellent
improvements, including Slice, which
generates a planar cross-section shape
of any 3D object. This is really handy
for merging objects. Normally, I use
the Boolean with a box to get a cross-
section, but that's problematic. The
text shape generator also sports some
really good improvements, such as
kerning, multiline text, and so on.
UV mapping has a handy new fea-
ture: the Unwrap UVW modifier allows
you to move the mapping coordinates
individually in UV space (Figure 3).
This unwrapping concept is common
in 3D paint programs, but it's nice to
have it integrated into MAX 2. The
interface is simple: you "unwrap" the
mesh onto the texture, then just move
the points around and watch the tex-
ture mapping update on the 3D object.
UnWrap UVW lets you fix mapping
that needs to be carefully aligned to
the underlying mesh — an eyebrow,
for example. I had some difficulty
selecting coincident-mapped vertices,
such as the vertices at the top of the
cylinder shown in Figure 3. I'd like to
be able to select 3D vertices along with
the vertices on the unwrapped texture.
Materials, Rendering, and Animation
The materials editor got a fairly
major rebuild in
MAX 2. Many new
features abound. One
feature that I think is
great for prerendered
work is cropping —
the ability to use part
of a larger bitmap as
a texture. For exam-
ple, if you have an
image with stripes on
one half, you can
define a region in the
striped area and
assign only that
region as a texture.
Previously, of course,
you had to create a
separate bitmap.
Cropping is useful for a technique
that I call texture clumping: grouping
textures into sizes and shapes that are
friendly to real-time graphics engines.
Many graphics cards and rendering
engines require square textures that are
8, 16, 32, 64, 128, 256, or 512 pixels on
a side. This is an annoyance for RT3D
artists. We're always trying to squish
nonsquare textures onto square sur-
faces, no simple matter when you have
a long, thin texture. One approach is to
"clump" several long, thin textures
into a single image, then use clever
mapping to get a particular part of the
texture onto the model.
At first, I thought that was the pur-
pose of the cropping feature in MAX 2
— but it isn't. The UVs on the mapped
object aren't modified when you change
the cropping settings in the material edi-
tor (or at least the UVs that are exported
in the VRML output aren't modified).
I'm guessing it saves a "transform" for
UV coordinates on that material. That
works fine for prerendered work, but it's
ignored when MAX 2 exports VRML.
A lot of the work that was done to
develop good rendering tools for the
original release on MAX 1 was carried
through to its next logical step in MAX
2. Some of it worked well, some not so
well. For instance, MAX 2 offers space
for more rendering sample windows —
up to 24, with lots more options includ-
ing custom background and object
selection. Raytraced reflections and
refractions are here — a welcome addi-
tion to this release. MAX 2 allows selec-
tive ray tracing (per-object), which
could really save time. MAX's particle
systems improved a lot. Users can now
FIGURE 2. The elusive modeless NURBS dialog.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
use arbitrary objects for the particle,
including meta-particles — blobby par-
ticles for flow simulations. Particles also
behave according to the new physics
system, bouncing off surfaces and so
on. There's support for Photoshop and
Premier filters, which is kind of a no-
brainer, but you have to appreciate the
inclusion anyway. The new Blinn ren-
dering looked a pretty nice, but it
wasn't revolutionary. Blinn rendering is
variation on Phong. As with Metal ren-
dering in 3D Studio 4, Blinn is another
scan-line rendering variation.
Since I'm not an animator per se, I'll
just give a quick summary of the new
animation features that sound most
interesting. Subobject animation lets
you animate vertices, faces, and edges.
Additionally, the built-in Bones system
looks easy to use and straightforward.
MAX 2 supports motion capture data,
including real-time motion input and
key reduction. It's interesting that sup-
port for motion capture is part of MAX
2; Character Studio 2.0 (demonstrated
at SIGGRAPH '97) is supposed to offer
some very similar features. MAX 2 also
offers dynamic simulations, including
basic physics features such as fall, slide,
collide, and bounce.
Character Studio 1.2 for MAX 2 is
included on the CD with MAX 2, but it
won't fully install unless you already
own the previous version. The features
are basically the same; as with any
other plug-in, Kinetix updated it so it
would work with MAX 2.
Interface
I think MAX 2's weakest point is its
user interface (UI). On the plus side,
it's easy to learn and several of the
underlying ideas (good use of context
menus and some 3D interface innova-
tions) help make work easier.
That's about all the good points that
occur to me. On the negative side,
MAX 2's UI is inconsistent and inflexi-
ble. The mouse-only approach is slow
and error-prone, which would be for-
givable if I could just edit the toolbar
and access everything with keyboard
shortcuts, as I can with Microsoft
Office applications. Alas, MAX's UI is
about as flexible as the immutable
forces of nature. That's bad in any
application and unforgivable for a
product that leads an industry.
FIGURE 3. Unwrapped UVs.
What's inflexible
about MAX's UI?
One of my biggest
complaints is that
the input is depen-
dent on mouse
movement, and the
keyboard shortcuts
are substandard. The
list of key-assignable
commands is frustrat-
ing: it's unorganized
and lacks many
major commands.
For example, there's
no way to assign a
keyboard shortcut to
the commonly used
editing command
Move Vertex. Moving a vertex requires a
varied sequence of precise mouse clicks.
Unlike most modern software, MAX 2
doesn't allow the user to customize the
screen layout. Modeless dialogs are not
resizable, the menu structure is frozen,
and Kinetix's sidebar is certainly not
customizable. The user is stuck with
Kinetix's idea of perfection (prominent-
ly featuring the Percent Snap button) for
all eternity. Furthermore, MAX doesn't
have the standard Window main menu
item; it was combined with the View
menu, so opening the Materials Editor
window is under the View menu. Also,
don't change your screen color to a
black background: MAX's material selec-
tion font is always black.
Again, most of those layout issues
wouldn't be worth mentioning if
MAX allowed the user to change them
— but it doesn't. Heck, I'm even
annoyed at $25 shareware that doesn't
allow me to drag and drop toolbar
buttons; when my $2,500 software
package doesn't have a customizable
UI, I'm horrified. It especially burns
me because Kinetix obviously spent so
much time and energy on MAX 2;
how could it ignore the UI?
Other UI problems are abundant,
though less critical. White space is
poorly used. Some of the side-bar but-
tons resemble Windows 3.1 dialogs:
huge fonts with poorly designed white
space. Some of the most confusing
dialogs (for example, the snap setup)
are much improved, but the interfaces
to newly introduced features are not.
For example, the modeless NURBS
floater window (which is begging to be
a docking toolbar) consumes my pre-
cious desktop with useless white space,
and I can't resize it.
Nonfiling 3D windows would have
been nice. According to Kinetix docu-
ments, the display tiles for perfor-
mance reasons. Why not let users
decide that trade-off? Some of us have
darned fast computers; we'd rather
have our interface flexible than fast.
And then there's Strokes, a move-
ment-recognition system that reminds
me of the Apple Newton's handwriting-
recognition system: cute and innova-
tive, but poorly implemented. I found
that it worked for the preset functions,
but adding new functions wasn't practi-
cal. The UI didn't let me edit the stroke
shape, and its recognition was very
primitive. My initial impression was
that it's a pure gimmick, but when I
realized Strokes could assign keyboard
shortcuts, I got all excited: "Strokes be
damned, if this thing lets me set key-
board shortcuts to anything, then it's
great!" Nope. It offers the same crippled
list of assignable functions as the stan-
dard MAX interface, with a only a few
others thrown in. Sigh.
In a few cases, Kinetix has some
good, forward-thinking interface
designs in MAX 2, especially in the 3D
interface area. Most notably, the snap is
now predicted by a light blue 3D cur-
sor, underneath the 2D cursor and
showing where the grid (or endpoint,
or whatever) is. This works far better
than MAX 1, although it's a little slug-
gish and sticky-feeling (even on my P2-
266). Another nice 3D interface is the
highlighting of available edges on
NURBS surfaces — as with the snap, the
appropriate 3D object lights up as you
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
PRODUCT REVIEW
_J
■ 111
FIGURE 4. MAX 2's Edged Faces view.
pass the cursor over it, a quick, intuitive
interface that works really well.
Kinetix can afford to be playful with
its 3D interface since there aren't many
decent precedents. However, if Kinetix
wants to replace standard features such
as docking toolbars, the solution has to
improve upon the original (as in unclut-
tered, flexible, fast, and intuitive).
Display Improvements
I love the new Edged Faces view
(Figure 4). It's a combination of wire-
frame view and smooth plus highlight
view, and it probably took Kinetix
about 10 seconds to implement (not
that we users care). Real-time 3D mod-
elers especially appreciate this one: we
often need to see face boundaries while
working with textured surfaces. To
work around this problem in MAX 1.2,
my coworker Lisa Washburn realized
that the poor lighting in MAX's ren-
dered views could be a feature, not a
bug. She put a bright light in the scene
and viewed the model in facet plus
highlight mode, which textures the
model with simple lighting. The severe
lighting changes at the face boundaries
revealed the edges of the faces. Of
course, this workaround has drawbacks:
not all edges are always visible and it's
difficult to see the original texture.
One of MAX 2's most touted features
is its direct support for OpenGL and
Direct3D. Apparently, Kinetix decided
that Heidi needed alternatives — under-
standable, given such stiff competition.
I hope it works for others, but I didn't
have much luck in my own test. I'm
using STB's Velocity
128 AGP graphics
card in my P2-266
workstation, and I
couldn't get MAX 2
to make use of it.
Neither the Direct3D
nor the OpenGL
options worked.
I embarked upon a
little journey
through Kinetix's
tech support and
documentation. In
summary, I found
the following:
Kinetix has a web
page that lists com-
patible cards
(www.ktx.com/3dsmaxr2/html/graph-
ics_cards.html), but as of this writing,
there wasn't much on there — they
didn't test the Rendition Verite, for
example, which is one of the most
common hardware accelerators avail-
able. Somebody in tech support told
me that MAX 2 requires 8MB of video
RAM for Direct3D support (I'm not
sure that's true). Furthermore, I learned
that the Direct3D support requires the
DirectX 5 drivers — often, manufactur-
ers are shipping DirectX 5 with DirectX
3 drivers. For OpenGL support, I need-
ed to get drivers for version 1.1 or later
from the card manufacturer (STB
doesn't have any OpenGL drivers on
their site). After some checking,
Kinetix's tech support told me that
using OpenGL under Windows 95 is
"not possible," but that he'd check into
it further and get back to me.
At a local users' group meeting, I
learned that several people had success-
fully set up MAX with OpenGL and var-
ious graphics cards. One user reported
that the Permedia with the OpenGL dri-
ver distorted textures, but that the
problem disappeared when the software
driver was used. Another user reported
that the TrueFX Pro card also had dis-
tortion with OpenGL. Others reported
that oddly enough, hardware accelera-
tion didn't make that much difference
to display performance; in one case, the
software Z-buffer was 30 percent faster
than the hardware-accelerated OpenGL
driver. However, because OpenGL can
easily be set up to bypass the hardware,
I think it's possible that this report is
inaccurate. No one else at the meeting
had used MAX with a Riva 128-based
card, so I didn't get any insights into
my own hardware woes — and my card
still won't accelerate MAX.
Regardless of hardware acceleration,
some of my fellow artists report that
MAX 2 has improved their display per-
formance significantly. I tested this by
creating a simple benchmark test: about
ninety simple wireframe screen redraws
and view transforms. Here's what I did:
1. Start MAX clean and make sure it's
maximized. Create a Sphere object
(16 segments), apply an edit mesh
modifier, and Go to Sub-object/Face.
2. Change to the front view. Zoom
extents, and make sure it's a wire-
frame view, with no grid showing
and degradation override enabled.
Select a face on the equator that has
the right edge aligned with the axis
of the sphere.
3. Choose Arc Rotate, click on the
sphere, and start timing as we hold
down the right arrow key. When all
the red edges of the selected face
have rotated so that they're all invisi-
ble, measure the elapsed time.
After entering my ultra-clean-secure-
turbo test environment (a clean boot of
my usual computer), I ran the test on
the slowest MAX-capable machine I
have: a Compaq Armada 4130t laptop
(P133, 48MB RAM, 800x600x16 display,
and built-in graphics) running Windows
95. Of course, with this low-end hard-
ware, both MAX 1 and MAX 2 can only
use their basic software display drivers.
TABLE 1. Wireframe 16-Segment
Test Results.
Software
MAX 1.2
MAX 2.0
Time
35 seconds
30 seconds
TABLE 2 . Wireframe 256-Segment
Test Results.
Software
MAX 1.2
MAX 2.0
Time
73 seconds
60 seconds
TABLE 3. Texture plus Highlight 16-
Segment Test Results.
Software
MAX 1.2
MAX 2.0
Time
35 seconds
31 seconds
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
Table 1 shows the results of the initial
test. As you can see, MAX 2 was a little
faster than MAX 1 (17 percent improve-
ment). The test seemed to reflect my
experience in using MAX 2 (that is, a
small performance difference). But it
made me curious: Was there a big per-
formance increase with geometry han-
dling, while my little test only looked at
screen redraws? I reran the test with a
great big 256-segment sphere. This
monster had thousands of faces in the
same screen area as the other sphere.
Table 2 shows the test results for the
256-segment sphere. The 22 percent
improvement shown in this test made
me think that MAX 2 has improved
more in geometry handling than it has
in its software-rendering pipeline. But
what about nonwireframe objects? For
this test, I created a sphere with a
default material and added a bitmap
("sunset90.jpg") to it. I deleted a face
for reference and applied mapping as
well. The results are in Table 3 and,
again, show a small performance
improvement (13 percent, roughly).
I can almost hear the developers who
sweated out those 10-20 percent perfor-
mance increases grinding their teeth
when I call them "small improve-
ments." Let me explain: while I
applaud any performance improve-
ments, they don't really change the
way I work with MAX — especially
since I can get a cheap hardware card
and get a 100 percent or better
improvement in performance. If I had
the choice, I'd prefer improvements in
accuracy, not speed. MAX 2 still has
those really nasty interpenetrating
object borders in smooth plus high-
light Z-buffering, for example.
Documentation and Support
Fortunately, the problems that I
encountered trying to get my cheap
graphics card to accelerate MAX gave me
an opportunity to test Kinetix's support
system. First, I started where all good
users start: the manuals. When it comes
to Direct3D and OpenGL support, I
found a very terse, single-page discus-
sion hidden in the back of the manual
and one paragraph about OpenGL on a
loose card in the box — that was it as far
as printed documentation.
The online help is all new, and it's
based on Microsoft's Internet Explorer
instead of the standard Windows help
system. I couldn't see what advantages
it offered over normal help: It was dif-
ferent, but not clearly better. For exam-
ple, it lacks the "«" and "»" buttons
that I like for browsing neighboring
topics. It has slick features such as
smooth scrolling rather than snap-
jumps when you push the [Page Down]
key, and the simultaneous index/win-
dow interface was both good (conve-
nient to have the topics always pre-
sent) and bad (on a low-resolution
screen, I'd prefer to see more text than
half a window). In any case, the built-
in help files had more information
than the printed documentation, but
didn't help with my driver issues.
The problem with the documenta-
tion isn't simply that my particular
issue isn't adequately covered. Other
users have complained strongly about
MAX 2's documentation, saying that
the manuals aren't as thorough as they
once were. I agree — MAXScript, for
example, has almost no printed docu-
mentation, and help with NURBS is
difficult to find. Also, the online help
files are not fully integrated — some
are in the old Windows help system
and some are in the new Internet
Explorer-based system. I couldn't find
any reason for the discrepancy.
Next, I spent an hour or two brows-
ing Kinetix's online support site (sup-
port.ktx.com). I am so thankful that
Kinetix online support has finally
moved off of CompuServe (which I
find difficult to use, expensive, and
generally outdated) and onto the free,
easy-to-access Web.
The Kinetix support JH^^^^^^H
site is a sophisticated
bulletin board sys-
tem that is fairly
easy and compre-
hensive, but you'll
spend a lot of time
waiting for pages to
load.
Kinetix's support
site has one unusual
feature: not much
privacy. The system
publishes the num-
ber of times you log
in and how many
posts you've made. I
didn't mind it per-
sonally, but it defi-
nitely felt weird and
encouraged snooping. ("Is Jane Doe
working? She's logged on 20 times in
the last two weeks, with huge long
posts every time.") Content-wise,
there's lots of good stuff on there —
users, both newbies and professionals,
help other users, and the sysop has a
very good attitude. Distracted, I
browsed the MAXScript section, where
I was very impressed to see John
Wainwright (the MAXScript program-
mer) present, chatting amicably with
the adoring masses.
Still in pursuit of a solution to my dis-
play acceleration problem, I browsed all
the relevant areas that I could find on
the support site. Surely, other users are
struggling with the same issue, but I
found no major answers.
Still lacking a satisfactory solution
to my display problem, I called tech
support. MAX 2 comes with ten days
of free phone support, which is
intended mainly for set-up issues, not
general support. The lines closed
before 5:30pm, which cost me a day.
There's 5 l / 2 techs, and they're within
shouting distance of the QA people.
The support people say they're very
active on support.ktx.com — some-
one's on there every day, answering
the harder questions (and letting users
answer each others' easy questions). I
was very glad to hear that.
Unfortunately, tech support couldn't
really answer the question. The person I
talked to said lots of people are calling
with the same basic issue: how best to
use MAX 2 with cheap graphics hard-
ware. At this point, I'd spent about three
f !
i rl - AOwd
FIGURE 5 . MAXScript certainly doesn 't look overwhelm-
ing... but stand back.
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
PRODUCT REVIEW
hours on this problem and if I wasn't
writing about it, I would have given up.
But I have a cheat: Kinetix has special
people that regularly contact product
reviewers and offer to help answer ques-
tions. When my special person contact-
ed me, I asked her about the difficulties
I was experiencing with my graphics
card. She told me that yes, Riva 128 has
been tested and works via OpenGL. As
of this writing, that round of communi-
cation is still in progress, which means I
still don't know whether or MAX 2 is
really going to work with this card.
NAXScript
AXScript is truly great. That dull
little button in the Tools menu
will change the way we use MAX. What
does it look like? Not much. As Figure 5
shows, it looks quite pathetic compared
to today's programming workbenches.
As an artist, however, I appreciate a
minimum of confusion when I have to
confront programming tasks. I wish
MAXScript included a few more debug-
ging aids, a better text editor, and better
help (where are my printed reference
manuals?), especially for MAX-centric
commands and actions. Still, the exist-
ing setup basically works. The example
code, DEMO. MS, is a nicely written and
easy-to-understand introduction to
writing scripts for MAX, but it leaves
the user wondering where to go next.
I've done a little noodling around
with MAXScript. I read the manual and
wrote a simple function or two. But I
haven't yet used it enough to evaluate
its power (or limits thereof). Compared
to other built-in languages, (I'm experi-
enced with Word 97's built-in macro
language, and I spent way too much
time in AutoLISP, AutoCAD's built-in
language), I think MAXScript looks
really good. The syntax is simple, as it
should be, and many of the annoying
parts of programming (declaring vari-
ables and garbage collection, to name
just a couple) are seamlessly hidden. At
first, I wasn't impressed by the func-
tions that interact with specific MAX
objects in a scene; their names and
syntax were confusing.
MAXScript seems quite well integrat-
ed with MAX. It can interact with
3D
Studio MAX-B1
Rating (out of five stars): OOOO
Kinetix Inc.
San Francisco, Calif.
800-789-4233
www.ktx.com
Price (list /street): Full version - $3,495/$2,899; Educational version - $995/$899;
Upgrade from MAX 1 - $795^695 (commercial to commercial)
Requirements: At the minimum, you'll need a Pentium 90 with 48MB running Windows
95. Kinetix recommends a Pentium 166 with 128MB running Windows NT.
Technical Support: Ten free days from your first call. Other support varies by dealer
(some will relay tech support issues to and from Kinetix).
Return Policy: The dealer says there are no returns of any kind allowed. The license
that comes with MAX 2 says that you can return MAX for a full refund within 15 days if
you don't agree with the license terms.
Pros:
1. MAXScript allows quick, easy customization and simple tool creation.
2. All the little bug fixes (especially VRML exporter) make this product more stable and
easier to use.
3. 0penGL/Direct3D support allows users to use inexpensive graphics cards.
Cons:
1. "Frozen" (noncustomizable), cluttered, mouse-centric interface slows down experi-
enced users.
2. Incompatible .MAX file formats make sharing data near-impossible with MAX 1 users.
3. Assorted documentation problems (inadequate tutorials, multiple online help sys-
tems, and so on).
Competitors (with estimated prices): Softimage 3D ($7,500); Softimage 3D Extreme
($15,000); Lightwave ($i,995/$i,795); Alias PowerAnimator; Electric Image
($2,495/$2,395).
MAX's database, UI, and (to a degree)
the file system. It can also access plug-in
functions, which is very impressive, and
it can even use OLE to integrate with
external applications, which is bloody
amazing from a user's point of view.
I spoke with a plug-in developer
about the power of MAXScript. He said
that his commercial product could
have been written in MAXScript and
that he foresees MAXScript being very
useful as a prototyping tool for plug-in
developers. This is good news for starv-
ing artists; I hope we see cheaper
(albeit slower) MAXScript versions of
commercial plug-ins.
From what I can see, MAXScript is
great, but there's always room for
improvement. I'd like to see multitask-
ing. I want to write scripts that run
concurrently with MAX. I'm also con-
cerned about security. MAXScript's
power is quite broad, and scripts are
easy to download and execute. Many
users aren't experienced programmers
and don't know how to review code for
malicious behavior. I worry that
MAXScript is an ripe environment for
dangerous viruses (much like Word
macro viruses, only worse). I think
Kinetix should take a proactive role in
preventing disaster for its users.
.MAX File Woes
There is one major issue you should
be aware of: MAX 2 writes a new
kind of file format that's incompatible
with MAX 1. Kinetix has confirmed
that this is true, and hasn't announced
any plans to fix it.
Who cares? More people care than
you might think — specifically, anyone
who uses MAX 1 and MAX 2 on the
same project. For example, you buy
MAX 2, but your customer/client/art
director hasn't upgraded their MAX 1.
How do you show them your artwork?
You're stuck with using lame .3DS files
to get data out of MAX 2 and back into
MAX 1. You'll lose data because .3DS
files don't store things such as multiple
UVs per vertex.
Why did Kinetix do this? Is it an evil
plot to force all MAX 1 users to
upgrade? Or did Kinetix innocently say,
"Let's make the .MAX file better," with-
out considering how MAX 2 will be
used with MAX 1? I think Kinetix (or
some other plug-in developer) should
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
fix this discrepancy by creating a MAX
1 -compatible .MAX file exporter.
New Features Replace Plug-ins
A number of new features overlap
existing plug-ins. The most obvi-
ous is the morph blending feature. This
allows the user to set multiple morph
targets and blend between them. It offers
features very similar to MorphMagic,
Smirk, and Mix (there's a good review of
these three in the December 1997 issue
of 3D Artist magazine, though it mistak-
enly says that MAX 2 doesn't offer this
feature). Users report that morph blend-
ing works fairly well, but not as smooth-
ly as the plug-ins do. A bunch of other
features also invade plug-in territory:
Bones, Lens flare, and the Sun System,
which creates correct sun positioning
given a latitude and longitude.
It's interesting to watch Kinetix
attempt to balance its desire to leave
room for plug-in developers with its
attempts to increase MAX's feature set.
The message behind MAX 2 is that
Kinetix has no problem stepping into
its developers' markets if it will make
MAX better. That's good for users, but
bad for developers — it reminds me of
Microsoft's tactics.
Gossip
After I'd played with MAX 2 long
enough to form an initial impres-
sion, I asked some of my peers about it.
First, I e-mailed a few artists; their com-
ments are scattered through this
review. Then I went to the local San
Francisco 3D Studio Users' Group
meeting.
About half the people at SF3DSUG
had used MAX 2, and they seemed to
think it was worth the money, especially
since many of MAX 2's built-in features
saved them the cost of having to buy
certain plug-ins (such as lens flare). Not
everybody was totally thrilled, though.
There was some heartfelt complaining
about the printed documentation. "We
want more than reprinted MAX 1 manu-
als," was a refrain that I heard more than
once. Another hot topic was the attempt
to get MAX 2 working with cheap 3D
accelerator cards (sound familiar?);
many varied opinions were bandied
about and some good data was collected.
Notably absent (or perhaps incognito)
were Kinetix employees — I would have
expected someone from Kinetix to be
there, but at that particular meeting, no
one was. There was a MAX dealer who
seemed to speak on Kinetix's
behalf /defense, which was helpful.
The Drum Roll...
MAX 2 is better than MAX 1. Is it
$800 better? That depends on
what 800 bucks means to you. If you're
a hungry freelancer who barely came
up with the cash for MAX 1, then you
can get by without MAX 2. It's better,
but it isn't going to change your work
enough to justify the cost.
On the other hand, most art depart-
ments and freelancers with healthy
incomes should definitely upgrade: you
could save the cost of the upgrade just
by using cheap 3D graphics hardware (if
you can get it working) and plug-ins (if
you haven't already bought them). ■
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
P O ST M O RT E M
E emble Age OF Empires
Matt PritcU
a r
had an experience in a local computer
store recently that caused me to burst
out laughing. I had stopped to self-
indulgently admire the top- 10 PC
games display when I overheard the
following exchange between two
young men:
"What do you think about this one, Age
of Empires?" wondered the first.
His companion shot back, "Aww, the
Borg at Microsoft just combined Warcraft
and Civilization to cash in on these kind
of games."
Always eager to boost our sales, I took
this opportunity to tell the young men
how AoE wasn't the creative product of a
GAME DEVELOPER MARCH 199*
http://www.gdmag.com
It.
The Age of Empires development team. The author is second from the
right in the row of guys who are kneeling.
giant corporation, but of a small group
of talented people living right in their
own backyard.
For us, Age of Empires was not only a
game of epic proportions, it was an
epic journey for a small band of people
determined to turn an idea into a real
game company. Along the way, we
laughed, we cried, we consumed pizza
and caffeine, and we learned a great
deal about making games.
Designing the Past Perfect
Obviously, Age of Empires didn't
start out looking like the final
product. Despite some accusations,
Dawn of Man (AoE's original title)
wasn't created to be a Warcraft II
clone. (In fact, Warcraft II wasn't
released until after AoE's development
was well underway.) Instead, the final
design was evolved and refined over
time, with a few significant design
events along the way. One of the best
things I think you can have in a game
company is a staff that plays a lot of
different games. This was true of our
staff at Ensemble, and was helped in
no small part by programmer Tim
Deen's habit of buying and actually
playing almost every new PC game as
it came out. It was Tim who brought
Warcraft II to the attention of the
rest of the Ensemble staff. At that
time, many of AoE's game elements,
such as resource management, empire
building, and technology research,
were taking clear shape. However, we
didn't really know what to do about
combat. Warcraft II was a splash of
cold water in the face, waking us up to
how much fun real-time combat could
be. Several times a week, the staff
would stay late to play multiplayer
Warcraft. These impromptu events
continued until AoE reached the
point in development when it became
more fun to play than Warcraft.
Another major shift occurred a little
over halfway through development,
when the designers were looking at
AoE's localization plans. They realized
that AoE would be sold in Asia, but
didn't include a single culture from that
region. We held a company-wide meet-
ing and decided to add early Asian civi-
lizations to the early European, African,
and Middle-Eastern tribes that we'd
already developed. Though the addition
would create more work for the artists
and designers, the enhanced appeal that
the game would have in Asia would
make this a profitable decision.
All of these changes occurred
because the game's designers weren't
afraid of taking design input from the
rest of the staff. Making a game that
everyone would be proud of and would
want to play was something that got
more than just lip service at Ensemble.
Perhaps the best example of this core
value is the Wonder, the penultimate
building that a player can build and
use to win the game. In early 1997,
AoE was great for slugfests, but every-
one felt that the game play needed to
offer something more. Numerous ideas
were tried and rejected. Then Mark
Terrano, our communications pro-
grammer, hit upon the idea of building
an " Armageddon Clock" that would
force players to drop what they're
doing and respond to the new chal-
lenge. AoE is chock full of little ideas
Matt Pritchard is busy trying to be a modern renaissance man. He designed the graph-
ics engine for the hit game, Age of Empires, and is currently working on the next gen-
eration of strategy games. He can be reached at mpritchard@ensemblestudios.com.
and touches that were thought up by
the artists and programmers. This par-
ticipation tangibly increased the sense
of ownership and pride that we all took
in the game.
One of things that is truly under-
appreciated about the designer's job is
play balancing. The designers spent
months and months adjusting costs,
strength, speed, and many other statis-
tics in an effort to create a game that
was fun to play and yet didn't offer any
loopholes or cheats. At this point, I real-
ized that Tim Deen was truly a gamer's
gamer. During development, if any of
the various iterations of AoE's design
opened up a way for one player to take
advantage of another player and thus
make the game one-dimensional, Tim
would find it. And when we didn't
believe his assessments, he would
promptly show us by using the loophole
to kick our butts at the game. For the
better part of a year, play balancing was
a prominent task, and it paid off in giv-
ing AoE more staying power and better
game play than many others in the
recent crop of real-time strategy games.
Blazing the Multiplayer Path
ultiplayer support was an inte-
gral part of the early design, and
AoE was structured in such a way that
most of the game could not differenti-
ate between human and computer
players. When DirectX first came out,
it appeared that DirectPlay would be
the best choice for providing commu-
nications over the widest variety of
connection types.
To support a high number of moving
units, we went with a modified game
synchronous model, where the entire
game is simultaneously run on all
machines. Only moves, changes, and
commands are communicated to other
machines. This approach has the
advantage of minimizing the amount
of data that has to be sent. The unan-
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
POSTMORTEM
ticipated danger of using this model is
that it can generate a condition where
the game on one machine becomes out
of sync with the game on other
machines. This caused some very hard-
to-reproduce bugs with AoE.
Load metering, the process of deter-
mining how much bandwidth the game
updates required, was done before the
computer AI was completed, and was
based on the data flow model taken
from human players. As a result, we ini-
tially missed the fact that computer
players would sometimes issue large
numbers of commands in quick bursts.
We did, however, address this oversight
with the first patch. An area where
AoE's communications worked out bet-
ter than expected was the game's ability
to dynamically adapt to latency. A slid-
ing window delays the actual game time
when a command takes effect, so that
all players receive the command and do
not have to pause before executing it.
The problem of handling players
who have dropped from a game pre-
sented Mark Terrano with difficult
challenges. Since drops are unpre-
dictable, usually there is no way to
know what happened. The problem
could be the game logic, Winsock, the
physical connection, or the ISP, and
could exist on either the sender's or
receiver's side. Getting the game to
handle drops by anyone at anytime
required a great deal of work.
One of the lessons learned from the
multiplayer experience was to make
full use of communica-
tions testing tools, such
as automated logs and
checksums. Also, we
discovered that creating
a simple communica-
tions data flow simulator
program can provide great benefits and
isolate the communications code from
the rest of the game.
DirectPlay also turned out to be
problematical. Difficult-to-reproduce
bugs, quirky behavior, and poor docu-
mentation made the going more diffi-
cult. Guaranteed packet delivery for
IPX was one of the more notable exam-
ples. At the CGDC, Microsoft promised
to deliver this feature with DirectX 5
and even included in the beta.
However, when DirectX was actually
released, this feature was nowhere to
be found. The cost of that one missing
item was the extra time we had to
spend writing our own guaranteed
delivery system and a bad packet gen-
erator program with which to test it.
Painting the Scene
A
ge of Empires contains 20MB of
in-game sprite graphics. Even
though all of the displays are 2D, we
decided early on that all of the graph-
ics in the game would be taken from
3D models. We used 3D Studio and 3D
Studio MAX for art production.
Because 3D rendering is so time-con-
suming, each artist was issued two
machines each, both usually 200MHz
Pentium Pros with 128MB of RAM,
which at the time was better equip-
ment than the programmers were
using. The objects in the game were
created as 3D models that had any-
where from a couple thousand to
100,000 polygons. The models were
then textured, animated, and rendered
out to a .FLC (Autodesk Animator) file
with a fixed 256-color palette.
So far, the process I've described is
identical to that of many other games.
At this point, however, the artists added
another time-consuming step. The .FLC
files were handed off to a 2D specialist,
who took the animation apart frame by
frame and "cleaned up" each image
with Photoshop. The clean-up process
involved sharpening detail and
smoothing the edges of the irregular
shapes. Since most of the sprites in AoE
had screen dimensions of only 20 to
100 pixels in each direction, the visual
quality improvement that we realized
was significant. When AoE was shown
at the 1997 E3, the artists received
numerous compliments on their work
from their peers at other companies.
The choice to go with 3D models for
the in-game objects provided benefits
for other art needs, as they were readily
available for use in the static back-
ground scenes that appear on the
menu, status screens, and the various
cinematics. The cinematics, including
the three-minute opener, were a full-
time project unto themselves.
The 256-color palette (actually 236)
used in AoE was something of a prob-
lem. The palette was chosen and set in
stone at the very beginning of the pro-
ject, before most of the models and
textures had been created. As a result, it
turned out that some portions of the
color spectrum, such as browns for
wood textures, had too few available
colors to get the best visual quality.
The palette wasn't revised during the
development process because that
would have required rerendering and
touching up every image in the game
— far too expensive time-wise. On the
other hand, the palette did have a wide
and balanced range of colors, which
contributed to the overall bright and
cheerful look of the game's graphics. If
we do another 8-bit color game, we'll
generate the palette at a point further
along in the development process.
Going for Speed
Performance is an issue for all but
the simplest of games, and it cer-
tainly was for AoE. When I joined
Ensemble, the game was still in an early
form and slow. The two biggest prob-
lems were the graphics engine (which
was just plain slow) and various update
procedures, which produced occasional
pauses of up to a second in game play.
If we were going to sell to anything but
the most cutting-edge systems, some
serious optimization was in order. The
story gets personal here, as I did a great
deal of the work on this part of AoE.
I started by trying to get a handle on
what the over 100,000 lines of C++
code did (the source would rise to over
220,000 lines before it was finished).
After spending a few weeks studying
http://www.gdmag.com
All of the 2D sprites in AoE began life
as 3D models.
Early Asian civilizations had to be
added when Microsoft announced
plans to distribute AoE in Asia.
what we had, I proposed a major over-
haul of the graphics engine structure,
including writing a major portion in
assembly. AoE's original design team
asked if the frame rate of a benchmark
scenario could be raised from its cur-
rent 7 - 12 fps to 20 fps. I told them
yes. Inside I was sweating bullets, hop-
ing that I could deliver that much
improvement.
I couldn't just go ahead and rip out
the old graphics engine, as it would
hold up everyone else, so I spent the
next five months working mostly on the
new engine. Along the way, I managed
some incremental improvements that
upped the frame rate to 10 - 14 fps, but
the big breakthrough came during an
all-nighter, when the last piece of the
new design was put into place. Much to
my surprise, the benchmark scenario
was now running at 55 fps. It was excit-
ing to come back into the offices the
next day and see the formerly sluggish
animation running silky smooth. But
my work was not all on the graphics
engine. I also spent a great deal of time
identifying and optimizing myriad
processes in the game. Since the game
was real-time, many improvements
involved spreading out a process over
several turns rather than of stopping the
game until it completed. In the end, the
optimizations paid off handsomely and
allowed us to raise the default resolution
from 640x480 to 800x600.
A practical lesson that I learned from
this experience was how much addi-
tional overhead and slowdown a game
can acquire as it approaches comple-
tion. Often, early in a game project the
engine will show great performance —
but the game's not finished. When you
replace the simple test levels with the
complex final levels, add all the AI, UI,
and bells and whistles, you can find a
world of difference in actual perfor-
mance. This was true for AoE as well.
As we approached completion and all
of the loose ends were tied off, many of
the performance gains were traded in
for new features.
Things That Worked Out (S)well
IThe game was broken into separate
• ENGINE AND GAME COMPONENTS. About
halfway through development, there
was concern that the code base had
expanded far enough beyond the ini-
tial design in some areas that every
new change and addition would look
like an ugly hack. Lead programmer
Angelo Laudon and Tim Deen took two
weeks and separated the code base into
two separate sections, the general
engine (Genie), and the game itself
(Tribe). The conversion was very suc-
cessful and allowed the AoE program-
mers to retain a nicely object-oriented
design. The benefit here was that it
made the code much easier to modify
and extend, saving the programmers a
great amount of development time.
2 We made the game database driven.
• Thanks to the object-oriented
design, almost nothing about any
object in AoE is hard-coded into the
program. Instead, huge tables of infor-
mation describe every characteristic of
every object that appears in the game.
The designers used a system of over
forty Paradox tables to control and
shape the game. As a result, they were
able to constantly update and tweak the
game, and then test their changes with-
out having to involve a programmer.
3 We stayed in close contact and work-
• ing together with the publisher. i
can't say enough good things about
how the close contact with our pub-
lisher, Microsoft, helped the develop-
ment of AoE. By keeping them "in the
loop" on our progress, they worked
with us instead of against us as things
happened. The best example of how
this relationship aided development is
the way we handled schedule slippage.
Each time something took longer than
expected or new problems cropped up,
we effectively communicated the delay
to Microsoft. With a clear understand-
ing of what was happening and why,
they reaffirmed their commitment to
assist us in producing a quality game,
whatever amount of time that would
take. So instead of being panic-stricken
and whacked out, we remained profes-
sional and focused on
our goals.
4 We played our own
• game. While this
may sound simple, it's
very important.
Throughout the devel-
opment process, every
person in the company
not only play tested,
but played AoE with
the purpose of having
fun. As a result, we were
very in tune with why the game was
fun, and what people were likely to get
out of it. We had 20 guys who were
determined not to let the game play be
compromised or watered down.
5 Performance was good. Perfor-
• mance truly means a lot if you
want your game to have broad appeal.
Age of Empires can adequately run an
eight-player game in 16MB of RAM on
a P120 system. Contrast that with
Total Annihilation, which requires
32MB and at least a 200MHz CPU for
an eight-player game. Achieving this
level of performance required a group
effort. The programmers expended
extra energy on keeping memory con-
http://www.gdmag.com
MARCH 1 99 8 GAME DEVELOPER
POSTMORTEM
sumption in check and identifying bot-
tlenecks, while the artists culled extra
animation frames and reorganized the
graphics to maximize free memory.
6 The company respected its employees.
• I have to say something about the
way Ensemble Studios treated its
employees and their families. It is well
known that software development,
especially game development, involves
great sacrifices of time and can be hell
on personal relationships. Ensemble's
thoughtful management respected that
by going out of their way to include
families at numerous company dinners
and other events, and to make them
feel welcome to come by the offices at
any time. Additionally, after crunching
hard to meet a milestone, they would
insist that employees take a couple of
days off to catch up with their families.
People were allowed flexible schedules
if they needed them, and flowers or
other tokens of appreciation were sent
to the families periodically. The result
of this deliberate action by company
management should be obvious; com-
pany morale and loyalty was higher
than I have ever seen in fourteen years
of software development. My wife
loves my job as much as I do.
X* 2 Lit
/Localization really worked.
• From the beginning, we
knew that Microsoft wanted to
release AoE in six different lan-
guages, including Japanese.
About halfway through develop-
ment, we updated our code base
to provide full localization sup-
port. This required stripping out
and replacing all text references
in the source code and maintain-
ing all game text in an external
resource file. It also placed severe
restrictions on how we could draw
and display the text. We had to use the
Windows GDI exclusively, something
most games shun like the plague. It also
meant that interface items such as but-
tons had to be sized to hold the largest
possible translated form of their cap-
tions, limiting the clever things one
could do with the design of the user
interface. But we buckled down and did
it, following the guidelines exactly. And
to our pleasant surprise, the conversion
was swift and painless. We felt even bet-
ter when the translators at Microsoft
told us that localizing AoE was the
smoothest and most pain-free project
they had ever done. The benefit to us
was enormous in that we had a single
executable program file that was the
same for all translated versions of the
game, thus avoiding the huge headache
that comes with tracking bugs and
releasing updates for multiple versions.
We worked as a team that respected
ALL ITS MEMBERS. A project of AoE's
size required that we all work together
in close quarters for extended periods
of time. One of our expressed criteria
in hiring new people is that we must be
able to respect each other. This respect,
complemented by the company's
actions towards its employees, fostered
an excellent sense of
family and team spirit
among everyone. We
avoided having differ-
ent groups develop a
sense of isolation from
the project, and as a
result, attitudes and
spirits remained high
even during the worst
crunch time. Had tem-
pers flared and cliques
developed, I honestly
don't believe that AoE
could have made it out
the door in 1997.
8 }
Things That Went Wrong Or We Could
Have Done Better
IWe held the beta test too late in the
• development cycle. A public beta
test of AoE was held in August 1997,
but we didn't come near to exploiting
the full potential of it. We were too
close to the end of the project to make
any game play changes, despite the
wealth of useful feedback we received.
Manuals were already set to be printed,
and most of the design had been set in
stone. All we could really do was fix
any bugs that were found. For any
future projects, we vowed to hold the
beta testing earlier.
2 There was inadequate communi-
• CATION WITH THE QA PEOPLE AT
Microsoft. For most of the project,
bug reporting was handled through a
database and developers didn't
directly communicate with the
testers. As a result many bugs wound
up taking much longer to resolve,
and new features went untested. An
intermediate database was simply not
enough to let testers and developers
know what the other was really
thinking. In future projects, we
would like to assign a specific tester
to each programmer and have them
communicate by phone every couple
of days. Near the end of develop-
ment, this did happen for a couple
people — for them productivity with
testing and bug resolution was drasti-
cally improved.
3 We sometimes failed to coordinate
• development through the leads. yet
another area where personnel commu-
nication could have improved the
development was among our own
teams. Each team — Programming,
Art, Game Design, and Sound — has a
lead person who is responsible for
keeping track of what each member of
his or her team is doing. The lead is
the go-to person when someone out-
side has new requests for the team. As
the development of AoE progressed
and the pressures rose, adherence to
this system broke down as people went
direct to get their needs filled quickly.
We paid a price for it. People didn't
know about programming changes or
new art that was added to the game,
and the level of confusion rose, creat-
ing a time drain and distraction. We
all had to stop at times just to figure
out what was going on.
GAME DEVELOPER MARCH 1998
http://www.gdmag.com
4 We failed to adequately test multi-
• PLAYER GAMES WITH MODEM CONNEC-
TIONS. One problem with our develop-
ment environment is that it isn't
comparable to the typical end user sys-
tem. During the course of develop-
ment, the multiplayer portions of AoE
were tested extensively. When we
played a game in the office, our fast
machines, stuffed full of RAM, commu-
nicated with each other on our high-
speed LAN. When we tested Internet
play, our communications were han-
dled through the company's Tl line.
One thing that we failed to realize in
our testing was the fact that most play-
ers would be using dial-up modem con-
nections to commercial Internet ser-
vice providers. And it wasn't just us;
the same situation applied to the test-
ing labs at Microsoft. As a result,
modem connection games were under-
tested. Bugs that were harmless when
ping times were low resulted in
dropped games for users on slower
Internet connections. And our high-
speed network masked the fact that
under certain not-so-uncommon cir-
cumstances, AoE could require 15K of
network bandwidth per second — six
times what even a 56K modem can
provide on the uplink side. As a result,
we were taken a bit by surprise when
reports of multiplayer game problems
rolled in. Though our first patch fixed
this problem, the situation was unac-
ceptable. Now, each developer has a
modem and several different ISPs are
used, as modem testing is a big part of
our testing process.
5 Portions of development relied on
• PRODUCTS THAT WERE NOT DELIVERED ON
time. There was a second reason that
modem games were under-tested; prob-
lems with the delivery and quality of
DirectPlay from Microsoft. Features that
were promised, and even included in
beta releases, weren't present when the
delayed final release was delivered.
Direct X 5a wasn't available to us until
a month before the game shipped. In
the meantime, our communications
programmer was burning the midnight
oil writing the functionality that was
expected but not delivered. Waiting on
promised drivers and SDKs is one of the
harder things that developers have to
deal with, even those with Microsoft as
a publisher have no control over them.
6 We did not plan for a patch. The
• version 1.0a patch, even though
it was a success, was problem-
atic in that as a company we
had not planned for it. The
general argument is that if you
know you are going to need to
release a patch, then you
shouldn't be shipping the
game in the first place. While
one can take that stand, it's
also a fact that no game devel-
oper's testing can match that
of the first 50,000 people who
buy and play the game. Your
customers will do and try
things that you never dreamed of,
while running on hardware and dri-
vers that you never heard of. Looking
around, nearly every significant game
released this year has had a patch or
update released for it. Rather than
deny this reality, we would like to
allocate resources and expectations in
the future so that we can release any
necessary updates days or weeks after
our games ship, rather than months.
7 We didn't manage "surprise" events
• as well as we could have. During
the development period, we experi-
enced several sudden events that
caused us, as a company, to stop what
we were doing. These events included
the creation of a demo version of the
game and materials for press coverage
of AoE. While most of the events were
beneficial to the company, we weren't
very good at handling them, and they
threw off our schedules. These disrup-
tions mostly came late in development,
when their impact was felt the most.
One of our goals for future games is to
minimize the impact of unplanned
events by giving advance notice when
possible and restricting them by mini-
mizing the number of people that have
to respond to them.
8 We didn't take enough advantage of
• automated testing. In the final
weeks of development, we set up the
game to automatically play up to eight
computers against each other.
Additionally, a second computer con-
taining the development platform and
debugger could monitor each comput-
er that took part. These games, while
randomly generated, were logged so
that if anything happened, we could
reproduce the exact game over and
over until we isolated the problem. The
games themselves were allowed to run
at an accelerated speed and were left
running overnight. This was a great
£3
success and helped us in isolating very
hard to reproduce problems. Our fail-
ure was in not doing this earlier in
development; it could have saved us a
great deal of time and effort. All of our
future production plans now include
automated testing from Day One.
Patching It All Up
Once AoE was shipped off to pro-
duction, we threw ourselves a big
party to let off some stress. It turns out
we were a bit premature in our revelry.
Shortly after AoE arrived on store
shelves we began receiving feedback
on problems with the pathfinding,
unit AI behaviors, population limits,
and multiplayer play. Additionally,
some bugs were found that a player
could exploit to gain an unfair advan-
tage in the game. Management was
stirred to action at both Ensemble and
Microsoft, and the decision to do a
patch for AoE was made.
Although time was taken away from
other projects, and it took longer than
desired, the patch was a success; it vast-
ly improved the quality of multiplayer
games, fixed the bugs, and addressed
the game play concerns that had been
raised. And that brings the develop-
ment of AoE to where it is today,
which I hope is somewhere on your
hard drive... ■
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER
SOAPBOX
Don't Lie
on Your Resume
b u J o It n PodlaAeL
esumes are a funny thing. They're a
pain-in-the-ass to write, but you can't
get a job (that doesn't require you to
wear a name tag) without one. It's a
time-consuming, frustrating, necessary
evil, especially in the shaky and
volatile world of the game develop-
ment industry. At Blue Byte Software,
we get around a dozen resumes every
week from interested job seekers. It's
pretty easy to see who's got their act
together within the first few minutes,
based not just on presentation, but on
background, experience, and educa-
tion. The company president passed
along a resume to me a few weeks ago
that shocked me unlike anything I've
read before.
It started with the sheer size of it —
six pages. Yes, you read that right, six
pages. Unless you're say, Winston
Churchill, I don't see how you could
logically come up with enough accom-
plishments to fill four pages, let alone
six. So I read on, more for amusement
than from any desire to "get this indus-
trious go-getter in for an interview."
After three pages of objective, sum-
mary, and experience, Mr. Joe Blow
(the name has been changed to protect
the clueless) got to 'Titles as of July
1997." Three pages of games followed,
listing title, platform, position, and
genre (an amazing 154 total — many
listings were for the same game on var-
ious platforms and/or never-published
titles). When I got to the last page,
however, my jaw nearly hit the floor.
John Podlasek is project manager of U.S. development for Blue Byte Software Inc. in Schaumburg, IL.
While trying to break into the advertising world, he got side-tracked and took a " short term" position at
NEC's TurboGrafx- 16 gaming division. Over eight and a half years later, he's still knee deep in it, hav-
ing worked for both monster mega-corporations and small companies, held numerous positions and
titles, battled know-nothings and knuckleheads, nursed wicked trade show hangovers, fought sleep depri-
vation every summer and fall, and been involved with boring, average, great, and a few outstanding
titles. He can be reached at podlasek@bluebyte.com.
One of the titles for which he had
listed himself as producer was a game
that J had designed and produced.
My first reaction was, "Who the f#*& is ^
this nimrod?" because I've never met,
spoken, e-mailed, or worked with him
As I read on, I discovered more
titles where he had listed
himself as producer for a
defunct gaming division of a
big corporation that I used to
work for (and can't name for
fear of hungry "separation let-
ter" attorneys). It was basically
the entire catalogue of the divi
sion's last year and a half — 25
titles in all.
So I told some other game indus-
try people about it, people whose
work he'd taken credit for. Their
responses range from "mad" to "let-
ter-bomb-ready" pissed. After doing
some digging on Joe Blow, I found
out that he spent a few weeks as a
worthless third-party producer
on a nonpublished game at a
division of a company that
had short-lived plans of
merging with my former
division. Although the
connections are get-
ting confusing,
the point is that
Continued on page 63,
GAME DEVELOPER MARCH 1 9 9 J
http://www.gdmag.com
sQlQsQ sQrQeQs
Continued from page 64.
these are games that he didn't produce
for a company that he didn't even
work for. Amazing.
Anyone who's been in this industry
for even a short period of time knows
that it's more incestuous than an
Alabama family reunion. Between the
layoffs, mergers, and millions lost, plus
the relatively small work force, people
get around. They talk, have friends
that left to work for other companies,
share drinks, attend seminars and
shows, and so on. It's ridiculous to
think, "No one will find out."
Some may ask, "Why make such a big
deal about it? The division isn't around
anymore, the games weren't that popu-
lar, and he needed to beef up the
resume. "My response is, "He lied!"
Besides the obvious ethical question,
stealing credit for games that you didn't
work on cheapens and belittles the late
hours and hard work put in by the peo-
ple who did. It's disgusting to think
back on all the headaches, frustrations,
and late nights put in on a game to just
have someone take the credit from you.
Don't get me wrong. I'm not complain-
ing about the hard work. It's the nature
of the beast in game development.
Besides, I know of a million more diffi-
cult ways to make a living than making
games. The point is that when you put
this much effort into a project (of any
kind, really), it magnifies the attach-
ment. When the level of effort, intensi-
ty, and time required for game develop-
ment is expanded, you take your titles
personally.
One other point stands apart from
the ethical question and the attach-
ment factor: survival. Having been out
in the job market a little over eight
months ago, I wondered, "What if this
yahoo got a job over me because of the
titles he lied about?" Most likely, any
company dumb enough to hire him is
someplace you don't want to work for
anyway, but the possibility is cause for
concern. Besides my own personal rea-
sons, I have honest, hard-working
friends out in the job market compet-
ing with this schmuck. It makes me
even angrier knowing that good people
may lose out on an opportunity
because some guy thought nobody
would know or care if he lifted a cou-
ple dozen game titles for the resume.
But our friend Joe Blow isn't the
only one guilty (just the most stupid
and blatant). He's more of a poster boy
for this dirty little secret that nobody
talks about. And it's not even limited
to resumes. I've read articles and web
pages published by people with whom
I used to work that twist, exaggerate,
and simply lie about past titles for
which they're claiming undue credit.
My advice? Keep your resume well
under six pages (unless you helped save
Western civilization) and don't lie about
the games that you didn't work on. The
industry is small and well-connected,
and it may come back to haunt you
down the road. Who knows? Someone
may even write a magazine article about
how stupid you are someday. ■
A D V E R T 1 S
E R 1
N D E X
NAM^^^^^^^^
PAGE
NAME
PAGE
3D Labs
22
Intel
C2/1
3Name3D
55
MultiGen
6/7
Animatek International
2
Numerical Design
19
Caligari Corp.
62
Oak Technology
14
Conitec Datensysteme Gmbh.
21
Quantum 3D Inc.
8
Diamondware
55
RAD Game Tools Inc.
C4
Digital Equipment Corp.
10/11
Raindrop Geomagic
48
Immersion Corp.
29
Stormfront Studios
62
InstallShield Software Corp.
C3
Tiburon Entertainment
62
http://www.gdmag.com
MARCH 1 998 GAME DEVELOPER